Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Pengiraan Tetingkap Berguling dengan Cekap untuk Tatasusunan 1D dalam 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!