我试图创建一个累积列表,但我的输出显然不是累积的。有谁知道我做错了什么? 感谢
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)
答案 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, ...]