首頁  >  文章  >  後端開發  >  如何在 NumPy 中高效計算滾動標準差?

如何在 NumPy 中高效計算滾動標準差?

Linda Hamilton
Linda Hamilton原創
2024-10-27 16:17:02312瀏覽

How to Efficiently Calculate Rolling Standard Deviations in NumPy?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn