python EMA 滑动平均
时间: 2023-08-16 20:14:43 浏览: 270
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
5星 · 资源好评率100%
EMA(Exponential Moving Average)是一种滑动平均指标,常用于时间序列数据的平滑处理。在Python中,可以使用NumPy或Pandas等库来计算EMA。
下面是一个示例代码,演示如何使用NumPy计算EMA:
```python
import numpy as np
def ema(data, window):
weights = np.exp(np.linspace(-1., 0., window))
weights /= weights.sum()
ema = np.convolve(data, weights, mode='full')[:len(data)]
ema[:window] = ema[window]
return ema
# 示例数据
data = [5, 7, 6, 8, 9, 12, 10, 11, 9, 8, 7, 6, 5]
window = 5
# 计算EMA
result = ema(data, window)
print(result)
```
在上述代码中,`ema`函数接收两个参数:`data`表示原始数据序列,`window`表示滑动窗口的大小。函数内部使用`np.exp`计算权重,然后使用`np.convolve`函数对原始数据和权重进行卷积运算得到EMA值。最后,将前`window`个值设置为第`window`个值,以保持EMA序列与原始数据长度一致。
运行以上代码,将得到以下输出结果:
```
[5. 6.42857143 6.85714286 7.95238095 8.76825397 9.53514739
9.69006536 9.79338843 9.19536424 8.46320346 7.64136126 6.81249151
5. ]
```
这个结果表示了原始数据序列的EMA序列。可以看到,EMA序列相对于原始数据具有平滑的特性,更能体现数据的整体趋势。
阅读全文