平均到数组的第 i 个元素

Mean till i-ith element of an Array

我需要计算数组(长度 n)的平均值,但只计算第 i 个元素(i<=n)。例如,一个装满骰子的数组。

x = {1,4,5,3,6,...}

我目前的方法是使用循环和 numpy.mean 并在每一步对数组进行切片:

x_mean_ith[0] = x[0]
for i in range(1,n):                                                
    x_mean_ith[i] = np.mean(x[:i])

此方法太慢,我需要它明显更快。目前,当数组的顺序为 n = 10^6 时,这部分代码大约需要 2 分钟。 有没有更聪明的方法来计算这个而不需要太多时间,内存使用并不重要。

您可以使用高效(矢量化)累积和来做到这一点:

x_mean_ith = np.cumsum(x) / np.arange(1,len(x)+1)