我正在编写一个使用 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,因为它使代码更清晰(相同的代码,不同的权重),否则我认为我将不得不遍历所有数据并进行切片。
关于这种行为的任何想法?