gpt4 book ai didi

python - 移动平均线或移动平均线

转载 作者:IT老高 更新时间:2023-10-28 12:24:27 24 4
gpt4 key购买 nike

是否有用于 Python 的 SciPy 函数或 NumPy 函数或模块来计算给定特定窗口的一维数组的运行平均值?

最佳答案

更新:已经提出了更有效的解决方案,uniform_filter1d from scipy可能是“标准”第 3 方库中最好的,而且还有一些更新的或专门的库。


您可以使用 np.convolve为此:

np.convolve(x, np.ones(N)/N, mode='valid')

说明

运行平均值是 convolution 的数学运算的一个例子.对于运行平均值,您沿着输入滑动一个窗口并计算窗口内容的平均值。对于离散的一维信号,卷积是一样的,除了计算任意线性组合而不是平均值,即将每个元素乘以相应的系数并将结果相加。这些系数,一个对应于窗口中每个位置的系数,有时称为卷积内核。 N个值的算术平均值为(x_1 + x_2 + ... + x_N)/N,因此对应的内核为(1/N, 1/N, ..., 1/N),这正是我们使用 np.ones(N)/N 得到的。

边缘

np.convolvemode 参数指定如何处理边缘。我在这里选择了 valid 模式,因为我认为这是大多数人期望运行均值工作的方式,但您可能有其他优先事项。这是一个说明模式之间差异的图表:

import numpy as np
import matplotlib.pyplot as plt
modes = ['full', 'same', 'valid']
for m in modes:
plt.plot(np.convolve(np.ones(200), np.ones(50)/50, mode=m));
plt.axis([-10, 251, -.1, 1.1]);
plt.legend(modes, loc='lower center');
plt.show()

Running mean convolve modes

关于python - 移动平均线或移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13728392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com