Как можно разделить каждый элемент массива на сумму массива? - PullRequest
1 голос
/ 04 мая 2020

У меня есть следующий массив:

propensity = [32.  0.  0.]

Я вычислил сумму массива следующим образом:

a0 = sum(propensity)

Я пытаюсь вычислить дробь для каждого элемента массива над суммой массива и написал следующую функцию:

def prob_rxn_fires(propensity, a0):
for x in propensity:
    print("propensity:\n", x)  
    prob = x/a0  
print("Prob reaction fires:\n", prob)      
return prob

Я хочу, чтобы функция возвращала три дроби для каждого элемента массива, в данный момент она возвращает только 0. Я думаю, это потому, что когда он перебирает массив и достигает оператора return, он возвращает только последнее вычисленное значение, равное 0/32 = 0,0. Мне нужно также вернуть первые 2 значения, но я не уверен, как это исправить?

Cheers

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Вы можете сделать просто как

propensity = [32.,  0.0,  0.0]
a0 = sum(propensity)
propensity = [x/a0 for x in propensity]
print(propensity)

Выход

[1.0, 0.0, 0.0] 
1 голос
/ 04 мая 2020

Как насчет использования numpy?

import numpy as np

propensity = np.array([32.0,  0.0,  0.0])
propensity/sum(propensity)

Вывод:

array([1., 0., 0.])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...