我需要使用移動平均來平滑我的數據,所以我使用卷積編寫了一個函數。但與我的原始數據相比,結果是左移。所以我用熊貓的內置rolling_mean()
,它工作得很好。問題是我不想使用熊貓,我試圖重寫這個函數,但是源代碼並沒有解釋它是如何工作的(或者只是我)。pandas rolling_mean()如何工作?
我最初的功能是大熊貓rolling_mean()
的
def moving_average(data, window):
return np.convolve(data, np.ones(window)/window, mode='valid')
的源代碼是:
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)
的關鍵是論證「中心」,但我不知道它是如何工作。 藍色是原始數據,綠色是我的嘗試,紅色(正確)版本來自熊貓。