移动平均线增加

时间:2017-10-21 12:15:28

标签: python function numpy machine-learning finance

我想计算增加的​​移动平均线。

我的主要目标是获得增加的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....]

1 个答案:

答案 0 :(得分:3)

您可以使用cumsumnp.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])