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