在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中文網其他相關文章!