📜  移动平均 numpy - Python (1)

📅  最后修改于: 2023-12-03 15:41:04.486000             🧑  作者: Mango

移动平均 numpy - Python

介绍

移动平均是一种常用于时间序列分析的统计方法,它用于平滑数据并减少噪声。在 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() 的函数,它接受两个参数:datawindow_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() 计算移动平均。我们还通过一个完整的示例演示了如何将移动平均结果可视化。