私はデータを平滑化するために移動平均を使う必要があるので、私は畳み込みを使って関数を書いています。しかし、その結果は、生データと比較して左シフトです。だから私はパンダの内蔵rolling_mean()
を使用して、それはうまく動作します。問題はパンダを使用したくないということです。私はこの関数を書き直そうとしていますが、ソースコードはそれがどのように動作するか(またはおそらく私だけ)を説明していません。pandas rolling_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)
キーは、引数「センター」ですが、私はどのようにその作品を知らない:
は私の本来の機能は、パンダrolling_mean()
の
def moving_average(data, window):
return np.convolve(data, np.ones(window)/window, mode='valid')
ソースコードがあるでした。 青は生データ、緑は私の試み、赤(正しい)版はパンダのものです。