我有一长串整数:

my_list = [10,13,42,23,12,45,33,59,12]


我想计算i中所有i的第一个0<i<n数字的平均值。

我基本上可以做到:

averages = [ sum(my_list[0:i]) * (1.0/i) for i in range(1,len(my_list)) ]


这可以给我正确的结果,但是我认为应该有一个更快的方法,因为我可以在以下计算中使用之前的总和。

我想numpy应该有一个更快的解决方案,也许吗?

最佳答案

如何使用numpy.cumsum

In [13]: import numpy as np

In [14]: my_list = [10,13,42,23,12,45,33,59,12]

In [15]: np.cumsum(my_list) / np.arange(1, len(my_list)+1, dtype=np.float)
Out[15]:
array([ 10.        ,  11.5       ,  21.66666667,  22.        ,
        20.        ,  24.16666667,  25.42857143,  29.625     ,  27.66666667])

关于python - 迭代高效地计算平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32514882/

10-14 18:06
查看更多