+-

似乎没有简单计算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可能已经变得有点臃肿了.
点击查看更多相关文章
转载注明原文:如何使用NumPy计算移动平均线? - 乐贴网