私はいくつかの統計作業を行っています。平均を計算する乱数の(大きな)コレクションがあります。平均を計算する必要があるだけなので、ジェネレーターを使用したいので、保存する必要はありません数字。
問題は、ジェネレーターに渡すと numpy.mean が壊れることです。やりたいことをする簡単な関数を書くことができますが、これを行うための適切な組み込みの方法があるかどうか疑問に思っていますか?
「sum(values)/len(values)」と言えればいいのですが、len はジェネレータには機能せず、sum はすでに消費された値です。
例を次に示します。
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 はジェネレーターでは機能しません。
ジェネレーターを使用するというアイデアは本当に気に入っていますが、このような詳細は物事を台無しにしているようです.