我正在做一些统计工作,我有一个(大量)随机数集合来计算平均值,我想使用生成器,因为我只需要计算平均值,所以我不需要存储号码。
问题是 numpy.mean 如果您将其传递给生成器,则会中断。我可以编写一个简单的函数来做我想做的事,但我想知道是否有合适的内置方法来做到这一点?
如果我可以说“sum(values)/len(values)”就好了,但是 len 不适用于生成器,并且对已经消耗的值求和。
这是一个例子:
import numpy
def my_mean(values):
n = 0
Sum = 0.0
try:
while True:
Sum += next(values)
n += 1
except StopIteration: pass
return float(Sum)/n
X = [k for k in range(1,7)]
Y = (k for k in range(1,7))
print numpy.mean(X)
print my_mean(Y)
这些都给出了相同的正确答案,购买 my_mean 不适用于列表,而 numpy.mean 不适用于生成器。
我真的很喜欢使用生成器的想法,但是这样的细节似乎会破坏事情。