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來進行卷積,因爲它使得代碼更清晰(相同的代碼,不同的權重),否則我想我必須遍歷所有數據並進行切片。
有關此行爲的任何想法?
謝謝我明白了。而且我也不知道[:: - 1]會顛倒數組/列表。這是非常有用的信息! –
作爲一個簡單的評論,'np.cumsum(np.ones(numdays,dtype = float),axis = 0)'是獲得'np.arange(numdays)+ 1或'np.np .arange(1.,numdays + 1)'。 –