9
numpyでコンボルブ関数を使用する移動平均関数を作成しています。この関数は、(weighted moving average)に相当するはずです。私の重みは(単純arithmatic平均のように)全て等しい場合、それは正常に動作します:numpy.convolveによる加重移動平均
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])
「有効」フラグを削除しても、正しい値が表示されません。私は実際にコードをクリーナー(同じコード、異なる重み)にするので、WMAとMAのためにconvolveを使用したいと思います。そうしないと、すべてのデータをループしてスライスする必要があります。
この現象に関するご意見はありますか?
ありがとうございます。また、[:: - 1]が配列/リストを逆転させることも知りませんでした。それは非常に有益な情報です! –
単なるコメントで、 'np.count(np.ones(numdays、dtype = float)、axis = 0)'は 'np.arange(numdays)+ 1'や' np.np .arange(1。、numdays + 1。) '。 –