使用NumPy轻松计算移动平均值:新手必学教程

How to Compute Moving Averages Using NumPy

准备工作

首先,请确保你的环境中已安装NumPy库。如果尚未安装,你可以使用以下pip命令进行安装:

pip install numpy

安装好NumPy库后,我们接下来会学习如何使用它计算移动平均值。

使用NumPy计算移动平均值

移动平均值(Moving Average,简称MA)是一种统计技术,它通过对数据集的不同窗口(子集)内的数据取平均值,生成一系列新的数据点。这种方法经常用于时间序列分析,以平滑数据集,从而更清晰地观察长期趋势,因为短期波动(噪音)可能会使趋势难以识别。

移动平均值(MA)在经济和金融领域的应用十分广泛,它可以帮助我们理解当前趋势、进行预测以及作为信号指标。此外,移动平均技术也被视为一种滞后性指标,因为它是基于历史数据来提供当前状态的信息的。

简单移动平均值(SMA)

我们首先使用NumPy计算简单移动平均值(Simple Moving Average,SMA)。之所以被称为“简单”,是因为它只对数据集中指定窗口内的数据进行平均计算,得到一个数据点。

例如,假设我们有10个数据点,我们想以窗口大小为5来计算SMA,可以使用以下代码实现:

import numpy as np

data = np.array([10, 15, 10, 30, 20, 45, 70, 50, 40, 60])
window_size = 5

weights = np.ones(window_size) / window_size
sma = np.convolve(data, weights, mode='valid')

输出结果如下:

[17. 24. 35. 43. 45. 53.]

如上所示,我们成功地获得了窗口大小为5的数据移动平均值。

累积移动平均值(CMA)

另一种移动平均技术是累积移动平均值(Cumulative Moving Average,CMA)。CMA会针对数据集中每个位置,计算从第一个数据点到当前位置所有数据的平均值(包括当前位置本身)。

以下是使用NumPy计算CMA的代码:

data = np.array([10, 15, 10, 30, 20, 45, 70, 50, 40, 60])
cma = np.cumsum(data) / np.arange(1, len(data) + 1)

cma

输出结果:

array([10.        , 12.5       , 11.66666667, 16.25      , 17.        ,
       21.66666667, 28.57142857, 31.2       , 32.22222222, 35.        ])

指数移动平均值(EMA)

此外,还有一种名为指数移动平均值(Exponential Moving Average,EMA)的技术。这种方法在计算时加入了权重,更强调最近的数据点。与SMA相比,EMA对近期数据的变动更为敏感,能够更有效地反映数据的最新趋势。这种权重的影响程度由参数alpha来表示。

接下来我们尝试使用NumPy来实现EMA:

data = np.array([10, 15, 10, 30, 20, 45, 70, 50, 40, 60])

def exponential_moving_average(data, alpha):
    ema = np.zeros_like(data)
    ema[0] = data[0]
    
    for i in range(1, len(data)):
        ema[i] = alpha * data[i] + (1 - alpha) * ema[i - 1]
    
    return ema

ema = exponential_moving_average(data, 0.5)

输出结果:

array([10, 12, 11, 20, 20, 32, 51, 50, 45, 52])

小结

以上就是使用NumPy库来计算各种移动平均值(SMA、CMA、EMA)的基本实现方法。掌握这些技巧,可以让你的时间序列分析变得更加轻松和高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值