簡體   English   中英

加權移動平均線與numpy.convolve

[英]weighted moving average with numpy.convolve

我正在寫一個移動平均函數,它使用numpy中的convolve函數,它應該等於a( 加權移動平均值 )。 當我的權重都相等時(如簡單的算術平均值),它可以正常工作:

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,因為它使代碼更清晰(相同的代碼,不同的權重),否則我認為我將不得不遍歷所有數據並采取切片。

關於這種行為的任何想法?

你想要的是卷積中的np.correlate第二個參數基本上被反轉,所以你的預期結果將是np.convolve(data, w[::-1], 'valid')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM