python - 迭代有效地计算平均值

标签 python list numpy

我有一长串整数:

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

我想计算第一个 i 的平均值数字,所有i0<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/

相关文章:

r - 计算例如具有多列 data.frames 的列表中的平均值

python - 比较 2 个列表列表的内容

java - 只需要支持随机访问和追加的线程安全列表

python - Numpy Array 将主数组的列非顺序划分为n个子数组

python - 将 fit_params 与 GridsearchCV 一起使用时出错,并且某些参数是单例

python - 制作 map 和寻路人工智能

Python3 : two dictionaries with numpy vectors of different size consume the same amount of RAM

python - 从 numpy ndarray 中提取特定数据

python - Panda 运行时警告无法将类型 'Timestamp' 与类型 'str' 进行比较,无法比较的对象的排序顺序未定义

python - 一个完整的、完整的初学者如何阅读源代码?