Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melancarkan Baris Matriks dengan Cekap dengan Pengindeksan Numpy Lanjutan?
Pernyataan Masalah:
Diberikan matriks dan susunan nilai gulungan , tugasnya adalah untuk menggulung setiap baris matriks secara bebas mengikut nilai gulungan yang sepadan. Contohnya:
A = np.array([[4, 0, 0], [1, 2, 3], [0, 0, 5]]) r = np.array([2, 0, -1]) expected_result = np.array([np.roll(row, x) for row,x in zip(A, r)]) # [[0 0 4] # [1 2 3] # [0 5 0]]
Penyelesaian menggunakan Pengindeksan Lanjutan Numpy:
Pendekatan cekap untuk melancarkan baris matriks secara bebas ialah memanfaatkan keupayaan pengindeksan lanjutan Numpy:
<code class="python">import numpy as np rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]] # Ensure negative shift to keep column_indices valid r[r < 0] += A.shape[1] column_indices = column_indices - r[:, np.newaxis] result = A[rows, column_indices]</code>
Penjelasan:
Pendekatan ini membolehkan penggulungan baris yang cekap dan ringkas, memintas eksplisit untuk gelung dan menggunakan operasi vektor berkuasa Numpy. Sama ada kaedah terpantas bergantung pada dimensi tatasusunan dan konfigurasi sistem tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Melancarkan Baris Matriks dengan Cekap dengan Pengindeksan Numpy Lanjutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!