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

Mary-Kate Olsen
Lepaskan: 2024-10-31 12:24:30
asal
819 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan