累计和清单

时间:2016-09-30 19:39:33

标签: python numpy cumsum

我试图创建一个累积列表,但我的输出显然不是累积的。有谁知道我做错了什么? 感谢

import numpy as np
import math
import random

l=[]
for i in range (50):
    def nextTime(rateParameter):
        return -math.log(1.0 - random.random()) / rateParameter
    a = np.round(nextTime(1/15),0)
    l.append(a)
np.cumsum(l)
print(l)

2 个答案:

答案 0 :(得分:1)

累积金额不是到位,您必须指定返回值:

cum_l = np.cumsum(l)
print(cum_l)

您不需要将该功能放在for循环中。将它放在外面将避免在每次迭代时定义一个新函数,并且你的代码仍然会产生预期的结果。

答案 1 :(得分:0)

如果您使用的是numpy,那么numpy是可行的方法,但是,如果您需要做的就是提供累积总和,那么Python3会附带itertools.accumulate

def nextTime(rateParameter):
    while True:
        yield -math.log(1.0 - random.random()) / rateParameter

>>> list(it.accumulate(map(round, it.islice(nextTime(1/15), 50))))
[2, 9, 14, 26, 27, ...]