numpyの畳み込み関数を使用する移動平均関数を作成しています。これは(加重移動平均)と同等である必要があります。私の重みがすべて等しい場合(単純な算術平均のように)、それは正常に機能します:
data = numpy.arange(1,11)
numdays = 5
w = [1.0/numdays]*numdays
numpy.convolve(data,w,'valid')
与える
array([ 3., 4., 5., 6., 7., 8.])
ただし、加重平均を使用しようとすると
w = numpy.cumsum(numpy.ones(numdays,dtype=float),axis=0); w = w/numpy.sum(w)
(同じデータの)3.667,4.667,5.667,6.667の代わりに...
array([ 2.33333333, 3.33333333, 4.33333333, 5.33333333, 6.33333333,
7.33333333])
'valid'フラグを削除すると、正しい値が表示されません。コードをよりクリーンにするため(同じコード、異なる重み)、WMAとMAに畳み込みを使用したいと思います。そうでない場合は、すべてのデータをループしてスライスを取得する必要があると思います。
この振る舞いについて何か考えはありますか?