Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mencipta Subarrays dengan Cekap daripada Array NumPy dengan Stride?

Bagaimana untuk Mencipta Subarrays dengan Cekap daripada Array NumPy dengan Stride?

Susan Sarandon
Susan Sarandonasal
2024-12-02 18:18:111002semak imbas

How to Efficiently Create Subarrays from a NumPy Array with a Stride?

Mengambil Subarrays daripada Numpy Array dengan Stride/Stepsize

Dalam konteks ini, kami membincangkan pendekatan yang cekap dalam Python NumPy untuk mencipta subarray daripada a tatasusunan yang diberikan dengan langkah tertentu.

Untuk mencapai ini, kami meneroka dua kaedah:

1. Pendekatan Penyiaran:

def broadcasting_app(a, L, S):
    nrows = ((a.size - L) // S) + 1
    return a[S * np.arange(nrows)[:, None] + np.arange(L)]

Dalam kaedah ini, penyiaran digunakan untuk mencipta matriks langkah.

2. Pendekatan NumPy Strides yang Cekap:

def strided_app(a, L, S):
    nrows = ((a.size - L) // S) + 1
    n = a.strides[0]
    return np.lib.stride_tricks.as_strided(a, shape=(nrows, L), strides=(S * n, n))

Kaedah ini menggunakan langkah cekap NumPy untuk mencipta matriks subarray.

Contoh:

Pertimbangkan tatasusunan a:

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

Untuk mencipta subarray panjang 5 dengan langkah 3, kita boleh menggunakan salah satu kaedah:

subarrays_broadcasting = broadcasting_app(a, L=5, S=3)
subarrays_strides = strided_app(a, L=5, S=3)

Kedua-dua pendekatan akan menghasilkan hasil berikut:

[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Subarrays dengan Cekap daripada Array NumPy dengan Stride?. 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