带numpy.con的加权移动平均

2024-10-02 02:38:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个移动平均值函数,它在numpy中使用卷积函数,应该等价于(weighted moving average)。当我的体重都相等(如简单的算术平均数)时,它工作得很好:

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使用卷积,因为它使代码更干净(相同的代码,不同的权重),否则我想我将不得不循环遍历所有数据并进行切片。

对这种行为有什么看法吗?


Tags: 数据函数代码numpydataarray卷积平均值

热门问题