2017-01-07 3 views
0

У меня есть цикл, запущенный в Python, но хочу суммировать результаты. Вот мой код:Содержит список результатов в Python

R=0.05 
Timestep = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 
Cash_flow = np.array([-10000, 300, 1000, 2500, 6000, 6100, 6250, 6250, 6300, 6300, 6200]) 

for i in Timestep: 
    Present_value = Cash_flow[i]*(1+R)**-(Timestep[i]) 
    print(Present_value) 

И вот результаты:

-10000.0 
285.714285714 
907.029478458 
2159.59399633 
4936.21484875 
4779.50961546 
4663.84622898 
4441.75831331 
4264.08798078 
4061.03617217 
3806.26217195 

Я хотел бы сделать сумма этих значений; есть ли простой способ сделать это?

Cheers!

ответ

2

избежать петли & использовать векторную способность numpy

sum_of_values = np.sum(Cash_flow[:]*(1+R)**-(Timestep[:])) 
print(sum_of_values) 

(sum также будет работать вместо numpy.sum)

результаты в:

24305.0530919 

дает такое же, как «классический» способ, только быстрее и без петли:

sum_of_values=0 
for i in Timestep: 
    sum_of_values += Cash_flow[i]*(1+R)**-(Timestep[i]) 
+0

Спасибо! Отлично :-) – dominoslater

0

Вы можете просто добавить my_sum = 0 перед циклом for и my_sum += Preset_value внутри цикла после установки Preset_value.

В конце программы (вне цикл), вы можете распечатать его с print(my_sum)

+0

Спасибо - очень ценит эту альтернативу. – dominoslater

Смежные вопросы