增加的移动平均

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

我的主要目标是获得增加的移动平均值,使得第一个移动平均值是第一个值的平均值,第二个移动平均值是前两个值的平均值,第三个移动平均值是前四个值的平均值,第四个移动平均值是前六个值的平均值,依此类推。

如何使用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。

但在减少/增加的移动平均值的情况下,这个数字会在每个下一个值处减少/增加。

我的主要目标是获得增加的移动平均值,使得第一个移动平均值是第一个值的平均值,第二个移动平均值是前两个值的平均值,第三个移动平均值是前四个值的平均值,第四个移动平均值是前六个值的平均值,依此类推。

如何使用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])

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注