累积总和表
Cumulative Sum List
我正在尝试创建一个累积列表,但我的输出显然不是累积的。有谁知道我做错了什么?
谢谢
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)
累加未取到位,必须赋return值:
cum_l = np.cumsum(l)
print(cum_l)
您不需要将该函数放在 for
循环中。将它放在外面将避免在每次迭代时都定义一个新函数,并且您的代码仍会产生预期的结果。
如果您使用 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, ...]
我正在尝试创建一个累积列表,但我的输出显然不是累积的。有谁知道我做错了什么? 谢谢
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)
累加未取到位,必须赋return值:
cum_l = np.cumsum(l)
print(cum_l)
您不需要将该函数放在 for
循环中。将它放在外面将避免在每次迭代时都定义一个新函数,并且您的代码仍会产生预期的结果。
如果您使用 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, ...]