我有一个由X
值组成的向量N = 10e6
。我想计算增加对的平均值。例如:
for i in range(0,N-1):
Ex[i] = X[0:i+1].mean()
这是一种非常低效的方法。什么是更智能的Python算法?注意Ex
和X
都是浮动值的numpy数组。
答案 0 :(得分:7)
以numpy
为中心的解决方案如下:
X = np.random.rand(10**6)
EX = np.cumsum(X) / np.arange(1, X.shape[0]+1)
答案 1 :(得分:3)
不是numpy
专家,但这避免了每次都计算元素的总和。只需积累总和:
current_sum = 0.0
for i in range(0,N-1):
current_sum += X[i]
Ex[i] = current_sum/(i+1)