在 NumPy 中实现一维数组的滚动窗口
在数据分析和操作中经常出现对一维数组高效执行滚动窗口操作的必要性。 NumPy 是一个强大的数值运算库,为此任务提供了多功能解决方案。
例如,考虑计算一维值列表的滚动标准差的任务。正如问题中给出的,使用循环的基本 Python 实现对于大型数据集来说计算成本可能很高。
基于 NumPy 的解决方案
为了优化此过程,NumPy 提供了简洁高效的方法:
<code class="python">import numpy as np def rolling_std(array, window): return np.std(np.lib.stride_tricks.as_strided(array, shape=array.shape[0] - window + 1, strides=(array.strides[0], array.strides[0])), 1)</code>
rolling_std 函数有两个参数:一维数组和所需的窗口大小窗口。
NumPy 的 as_strided 函数创建数组的视图,就好像它一样被划分为重叠的窗口,其步幅允许高效计算。
np.std 函数然后计算沿第二维的标准差,有效地执行滚动操作。
用法
要计算输入数组观测值的滚动标准差,只需调用:
<code class="python">stdev = rolling_std(observations, window_size)</code>
此解决方案具有高性能,无需显式循环,并充分利用NumPy 的高效数组操作功能。
以上是如何在 NumPy 中高效计算滚动标准差?的详细内容。更多信息请关注PHP中文网其他相关文章!