私はベクトルX
を持っていて、N = 10e6
の値で構成されています。私は増加するペアの平均を計算したいと思います。例:巨大なデータセットの平均を評価するPythonic法
for i in range(0,N-1):
Ex[i] = X[0:i+1].mean()
これは非常に非効率的な方法です。 Pythonのインテリジェントなアルゴリズムは何でしょうか?注釈Ex
とX
は両方ともfloat値のnumpy配列です。
私はベクトルX
を持っていて、N = 10e6
の値で構成されています。私は増加するペアの平均を計算したいと思います。例:巨大なデータセットの平均を評価するPythonic法
for i in range(0,N-1):
Ex[i] = X[0:i+1].mean()
これは非常に非効率的な方法です。 Pythonのインテリジェントなアルゴリズムは何でしょうか?注釈Ex
とX
は両方ともfloat値のnumpy配列です。
numpy
-centricソリューションは、次のようになります。
X = np.random.rand(10**6)
EX = np.cumsum(X)/np.arange(1, X.shape[0]+1)
エキスパートnumpy
エキスパートですが、これは毎回要素の合計を計算することを避けています。ただ、合計を蓄積し、次のよう
current_sum = 0.0
for i in range(0,N-1):
current_sum += X[i]
Ex[i] = current_sum/(i+1)
これはすでにかなり速く、そのような明らかな解決策です。ありがとう。 – gutelfuldead
あなたはあなた自身の 'mean'を記述する必要がありますitertools.accumulate' –
'のようなものとペアリング可能性がありますあなたは 'numpy.cumsum'を使ってインデックスで分けることができます。 –
@ YakymPirozhenko回答を投稿することを検討してください。 – Divakar