Bagaimana untuk Mengira Sisihan Piawai Bergulir dengan Cekap dalam NumPy?

Linda Hamilton
Lepaskan: 2024-10-27 16:17:02
asal
320 orang telah melayarinya

How to Efficiently Calculate Rolling Standard Deviations in NumPy?

Melaksanakan Tetingkap Bergolek untuk Tatasusunan 1D dalam NumPy

Keperluan untuk melaksanakan operasi tetingkap bergolek dengan cekap pada tatasusunan 1D sering timbul dalam analisis dan manipulasi data . NumPy, perpustakaan berkuasa untuk operasi berangka, menyediakan penyelesaian serba boleh untuk tugas ini.

Sebagai contoh, pertimbangkan tugas mengira sisihan piawai bergulir untuk senarai nilai 1D. Pelaksanaan asas Python menggunakan gelung, seperti yang diberikan dalam soalan, boleh menjadi mahal dari segi pengiraan untuk set data yang besar.

Penyelesaian berasaskan NumPy

Untuk mengoptimumkan proses ini, NumPy menawarkan pendekatan yang ringkas dan cekap:

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

Fungsi rolling_std mengambil dua argumen: tatasusunan 1D dan tetingkap saiz tetingkap yang dikehendaki.

Fungsi as_strided NumPy mencipta paparan tatasusunan seolah-olah ia telah dibahagikan kepada tingkap bertindih, dengan langkah yang membolehkan pengiraan yang cekap.

Fungsi np.std kemudian mengira sisihan piawai sepanjang dimensi kedua, dengan berkesan melaksanakan operasi guling.

Penggunaan

Untuk mengira sisihan piawai bergolek bagi pemerhatian tatasusunan input, cuma panggil:

<code class="python">stdev = rolling_std(observations, window_size)</code>
Salin selepas log masuk

Penyelesaian ini berprestasi tinggi, menghapuskan keperluan untuk gelung eksplisit dan memanfaatkan sepenuhnya Keupayaan NumPy untuk manipulasi tatasusunan yang cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Sisihan Piawai Bergulir dengan Cekap 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!