我有一长串整数:
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/