Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Pengiraan Tetingkap Berguling dengan Cekap untuk Tatasusunan 1D dalam NumPy?

Bagaimana untuk Melaksanakan Pengiraan Tetingkap Berguling dengan Cekap untuk Tatasusunan 1D dalam NumPy?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 12:24:30729semak imbas

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

Melaksanakan Pengiraan Tetingkap Bergolek untuk Tatasusunan 1D dalam NumPy

Pengiraan tetingkap bergolek melibatkan penggunaan fungsi secara berulang pada subset tatasusunan yang diberikan. Dalam konteks ini, soalan memfokuskan pada mencari cara yang cekap untuk melaksanakan pengiraan tetingkap bergolek untuk tatasusunan satu dimensi (1D) dalam pustaka Python NumPy.

Untuk mencapai ini, anda boleh memanfaatkan fungsi rolling_window daripada blog pos dirujuk dalam masalah. Walau bagaimanapun, fungsi ini direka bentuk untuk tatasusunan berbilang dimensi, jadi ia memerlukan beberapa penyesuaian untuk berfungsi dengan tatasusunan 1D.

Idea utama ialah menggunakan fungsi yang anda inginkan pada hasil fungsi rolling_window. Sebagai contoh, jika anda ingin mengira sisihan piawai bergolek, anda boleh menggunakan kod berikut:

<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>

Dalam contoh ini, fungsi rolling_window mencipta tetingkap gelongsor saiz n di atas tatasusunan pemerhatian. Fungsi np.std kemudiannya mengira sisihan piawai untuk setiap tetingkap dan menyimpan keputusan dalam tatasusunan rolling_std.

Pendekatan ini menggunakan operasi tatasusunan NumPy yang cekap untuk melaksanakan pengiraan tetingkap bergolek dengan lancar tanpa memerlukan gelung Python yang jelas.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengiraan Tetingkap Berguling dengan Cekap untuk Tatasusunan 1D dalam NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn