【发布时间】:2016-07-14 19:57:33
【问题描述】:
我需要使用移动平均线来平滑我的数据,所以我编写了一个使用卷积的函数。但与我的原始数据相比,结果是左移。所以我使用了 pandas 内置的rolling_mean(),它工作得很好。问题是我不想使用 pandas 并且我正在尝试重写这个函数,但是源代码没有解释它是如何工作的(或者可能只是我)。
我原来的功能是
def moving_average(data, window):
return np.convolve(data, np.ones(window)/window, mode='valid')
pandasrolling_mean()的源码为:
def f(arg, window, min_periods=None, freq=None, center=False, how=how,
**kwargs):
def call_cython(arg, window, minp, args=(), kwargs={}, **kwds):
minp = check_minp(minp, window)
return func(arg, window, minp, **kwds)
return _rolling_moment(arg, window, call_cython, min_periods, freq=freq,
center=center, how=how, **kwargs)
关键是参数“center”,但不知道它是如何工作的。 蓝色是原始数据,绿色是我的尝试,红色(正确)版本来自 pandas。
【问题讨论】:
标签: python pandas moving-average