Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengekstrak Subarray dengan Cekap dengan Langkah Tertentu dalam NumPy?

Bagaimana untuk Mengekstrak Subarray dengan Cekap dengan Langkah Tertentu dalam NumPy?

Susan Sarandon
Lepaskan: 2024-12-06 09:41:11
asal
819 orang telah melayarinya

How to Efficiently Extract Subarrays with a Specific Stride in NumPy?

Mengekstrak Subarray dengan Stride Menggunakan NumPy

Memandangkan tatasusunan NumPy, selalunya perlu membahagikannya kepada subbarray dengan langkah tertentu. Soalan ini meneroka cara untuk mencapai matlamat ini dengan cekap menggunakan penyiaran dan langkah NumPy.

Penyelesaian 1: Penyiaran

Fungsi broadcasting_app menggunakan penyiaran untuk membina subarray yang dikehendaki. Ia mengira bilangan baris berdasarkan saiz tatasusunan, panjang subarray dan langkah. Ia kemudian menggunakan penyiaran untuk mencipta tatasusunan baharu di mana setiap baris mewakili subarray.

Penyelesaian 2: NumPy Strides

Fungsi strided_app menggunakan mekanisme pengendalian langkah yang cekap NumPy. Ia mengira bilangan baris dan langkah seperti sebelumnya. Kemudian, ia memanfaatkan fungsi as_strided untuk mencipta tatasusunan baharu dengan langkah dan bentuk yang diingini.

Penggunaan Contoh

Untuk menggambarkan penyelesaian ini, pertimbangkan kod Python berikut:

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
L = 5  # Subarray length
S = 3  # Stride

print(broadcasting_app(a, L, S))
print(strided_app(a, L, S))
Salin selepas log masuk

Output:

[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]
[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]
Salin selepas log masuk

Kedua-duanya pendekatan menghasilkan matriks subarray yang diingini dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Subarray dengan Cekap dengan Langkah Tertentu 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