📅  最后修改于: 2023-12-03 15:41:04.486000             🧑  作者: Mango
移动平均是一种常用于时间序列分析的统计方法,它用于平滑数据并减少噪声。在 Python 中,我们可以使用 Numpy 库中的函数 numpy.convolve()
来计算移动平均。
我们可以通过下面的代码片段演示如何使用 numpy.convolve()
来计算长度为 window_size
的移动平均。
import numpy as np
def moving_average(data, window_size):
weights = np.repeat(1.0, window_size) / window_size
return np.convolve(data, weights, 'valid')
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
window_size = 3
print(moving_average(data, window_size))
上述代码中,我们首先导入了 Numpy 库并定义了一个名为 moving_average()
的函数,它接受两个参数:data
和 window_size
。
在函数中,我们使用 numpy.repeat()
函数来创建一个大小为 window_size
,且每个元素都为 $1/w$ 的加权数组。
接下来,我们使用 numpy.convolve()
函数对输入数据 data
和权重数组进行卷积计算。该函数的第三个参数 'valid'
表示仅返回计算得出的有效结果,而忽略边缘效应。
最后,我们打印出计算结果。
我们可以将上述代码运行,并将输出结果进行可视化,以便更好地了解移动平均的含义。下面的代码片段展示了如何使用 Matplotlib 库将原数据和移动平均结果进行可视化。
import numpy as np
import matplotlib.pyplot as plt
def moving_average(data, window_size):
weights = np.repeat(1.0, window_size) / window_size
return np.convolve(data, weights, 'valid')
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
window_size = 3
ma = moving_average(data, window_size)
plt.plot(data, label='Data')
plt.plot(ma, label='Moving average')
plt.legend()
plt.show()
上述代码中,我们首先导入了 Matplotlib 库,并使用第一段代码片段中的 moving_average()
函数计算移动平均。
接下来,我们使用 matplotlib.pyplot.plot()
函数将原始数据和移动平均结果可视化。在这里,我们将原始数据标记为 'Data'
,将移动平均结果标记为 'Moving average'
。
最后,我们使用 matplotlib.pyplot.legend()
函数显示图例,并使用 matplotlib.pyplot.show()
函数显示图像。
这篇文章介绍了如何使用 Numpy 库中的函数 numpy.convolve()
计算移动平均。我们还通过一个完整的示例演示了如何将移动平均结果可视化。