python - 如何使用 python + NumPy/SciPy 计算滚动/移动平均值?

标签 python numpy time-series moving-average rolling-computation

似乎没有函数可以简单地计算 numpy/scipy 上的移动平均值,导致 convoluted solutions .

我的问题有两个:

  • 使用 numpy (正确)实现移动平均线的最简单方法是什么?
  • 既然这看起来很重要且容易出错,那么是否有充分的理由不使用 batteries included在这种情况下?

最佳答案

如果您只想要一个简单的非加权移动平均线,您可以使用 np.cumsum 轻松实现它,可能是 比基于 FFT 的方法更快:

编辑更正了 Bean 在代码中发现的错误索引。 编辑

def moving_average(a, n=3) :
    ret = np.cumsum(a, dtype=float)
    ret[n:] = ret[n:] - ret[:-n]
    return ret[n - 1:] / n

>>> a = np.arange(20)
>>> moving_average(a)
array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,
        12.,  13.,  14.,  15.,  16.,  17.,  18.])
>>> moving_average(a, n=4)
array([  1.5,   2.5,   3.5,   4.5,   5.5,   6.5,   7.5,   8.5,   9.5,
        10.5,  11.5,  12.5,  13.5,  14.5,  15.5,  16.5,  17.5])

所以我猜答案是:它真的很容易实现,也许 numpy 已经有点臃肿了,有专门的功能。

关于python - 如何使用 python + NumPy/SciPy 计算滚动/移动平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313510/

相关文章:

python - Python 脚本通常有什么类型的换行符?

python - 如何在代码中更好地实现递归关系?

javascript - 日期选择器未定义 - jQuery

Python OpenCV2(cv2)包装器获取图像大小?

python - 如何绘制从 EEG 信号中提取的 ICA 分量?

python - 在大输入上滑动 tensorflow 分类器

python - 在 Python 中使用未初始化的变量

python - 具有多维数组的外积

python - 日志中遇到无效值

r - 估算数据集列表的时间滞后分析