首頁 >後端開發 >Python教學 >如何在 NumPy 中有效地對一維數組進行滾動視窗計算?

如何在 NumPy 中有效地對一維數組進行滾動視窗計算?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 12:24:30831瀏覽

How to Efficiently Perform Rolling Window Calculations for 1D Arrays in NumPy?

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

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