我想计算增加的移动平均线。
我的主要目标是获得增加的MA,使得第一个MA是第一个值的平均值,下一个MA是前2个值的平均值,下一个MA是前4个值的平均值,下一个MA是前6个值的平均值,所以上。
如何在Python中使用numpy库来实现这一目标?
我正在使用Python对时间序列数据进行分析。我也对移动平均线感兴趣,计算目标变量的移动平均线,我使用以下函数来计算目标变量的MA。
def movingaverage(values, avg_number):
weights = np.repeat(1.0, avg_number)/avg_number
smas = np.convolve(values, weights, 'valid')
return smas
在这个函数中,我提供了我的pandas Series和平均数到calc。相应的平均值。
现在,我想计算增加的移动平均线。如上所述,平均数是按固定数计算的,比如90.
但是,如果移动平均线减少/增加,这个数字将在每个下一个值减少/增加。
我的主要目标是获得增加的MA,使得第一个MA是第一个值的平均值,下一个MA是前2个值的平均值,下一个MA是前4个值的平均值,下一个MA是前6个值的平均值,所以上。
如何在Python中使用numpy库来实现这一目标?
如果输入为[1,5,3,6,8,4,6,8,4,2,3,5,8,6,4]
,则输出会增加移动平均值,例如[1,3,3,3.75....]
答案 0 :(得分:3)
您可以使用cumsum
和np.arange
即
x = np.array([1,5,3,6,8,4,6,8,4,2,3,5,8,6,4])
y = x.cumsum()/np.arange(1,len(x)+1)
输出:
array([ 1. , 3. , 3. , 3.75 , 4.6 ,
4.5 , 4.71428571, 5.125 , 5. , 4.7 ,
4.54545455, 4.58333333, 4.84615385, 4.92857143, 4.86666667])