累积总和表

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, ...]