增加移动平均线

Increased Moving Averages

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

我的主要目标是增加 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 系列和要计算的平均数。相应的平均值。

现在,我想计算增加的​​移动平均线。像上面一样,平均值是在固定数字上计算的,比如 90。

但是,在 reduced/increased 移动平均线的情况下,这个数字将 reduce/increase 在每个下一个值。

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

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