在 NumPy 中实现一维数组的滚动窗口计算
滚动窗口计算涉及将函数迭代地应用于给定数组的子集。在这种情况下,问题的重点是寻找一种有效的方法来对 Python 库 NumPy 中的一维 (1D) 数组执行滚动窗口计算。
要实现此目的,您可以利用博客中的rolling_window 函数问题中引用的帖子。但是,此函数是为多维数组设计的,因此需要进行一些调整才能处理一维数组。
关键思想是将所需的函数应用于rolling_window函数的结果。例如,如果要计算滚动标准差,可以使用以下代码:
<code class="python">import numpy as np 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) observations = [1, 2, 3, 4, 5, 6, 7] n = 3 # window length rolling_std = np.std(rolling_window(observations, n), 1)</code>
在此示例中,rolling_window 函数在观测值数组上创建大小为 n 的滑动窗口。然后,np.std 函数计算每个窗口的标准差,并将结果存储在 moving_std 数组中。
这种方法利用 NumPy 的高效数组运算来无缝执行滚动窗口计算,而不需要显式的 Python 循环。
以上是如何在 NumPy 中高效地对一维数组进行滚动窗口计算?的详细内容。更多信息请关注PHP中文网其他相关文章!