使用 Numpy 计算一维数组上的滚动窗口标准差
在 numpy 中,经常会出现需要计算滚动窗口函数的操作一维数组上。一种简单的方法是使用循环,如给定的 Python 代码片段所示。不过,通过 Numpy 的增强功能可以找到更高效的方法。
在 Numpy 中执行滚动窗口操作的关键在于利用博文中介绍的rolling_window 函数。该函数将输入数组重塑为一系列重叠的窗口,从而有效地创建一个二维数组。将函数应用于此二维数组可以进行基于窗口的计算。
要计算滚动标准差,只需将 numpy.std 函数应用于rolling_window 函数的输出即可。以下修改后的代码片段演示了这种方法:
import numpy as np # Define the rolling window function def rolling_window(a, window): shape = a.shape[:-1] + (a.shape[-1] - window + 1, window) strides = a.strides + (a.strides[-1],) return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides) # Input array observations = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Calculate rolling standard deviations stdev = np.std(rolling_window(observations, 3), 1) # Print the results print(stdev)
此代码片段使用纯 Numpy 运算有效计算给定一维数组的滚动标准差,无需循环。
以上是如何使用 Numpy 计算一维数组上的滚动窗口标准差?的详细内容。更多信息请关注PHP中文网其他相关文章!