我有一個向量X
,它是由N = 10e6
值組成。我想計算增加對的平均值。例如:pythonic方法來評估一個巨大的數據集的平均值
for i in range(0,N-1):
Ex[i] = X[0:i+1].mean()
這樣做的效率非常低下。什麼是更智能的Python算法?註釋Ex
和X
都是浮點值的numpy數組。
我有一個向量X
,它是由N = 10e6
值組成。我想計算增加對的平均值。例如:pythonic方法來評估一個巨大的數據集的平均值
for i in range(0,N-1):
Ex[i] = X[0:i+1].mean()
這樣做的效率非常低下。什麼是更智能的Python算法?註釋Ex
和X
都是浮點值的numpy數組。
不是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