Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggulung Baris Matriks Secara Bebas Menggunakan Pengindeksan Lanjutan?
Dalam bidang manipulasi data, selalunya perlu melakukan operasi yang kompleks pada tatasusunan berbilang dimensi. Satu senario sedemikian melibatkan penggulungan baris matriks secara bebas, berdasarkan nilai anjakan yang disediakan.
Memandangkan matriks input A dan tatasusunan nilai anjakan r, tugasnya adalah untuk menggunakan operasi guling pada setiap baris A menggunakan anjakan yang sepadan daripada r. Hasil yang diinginkan ialah:
[[0 0 4] [1 2 3] [0 5 0]]
Pengindeksan lanjutan menyediakan penyelesaian yang elegan untuk cabaran ini. Dengan memanfaatkan nilai anjakan negatif dan teknik penghirisan tatasusunan lanjutan, anda boleh melaksanakan operasi guling dengan cekap seperti berikut:
<code class="python">rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]] # Always use a negative shift, so that column_indices are valid. # Alternative: r %= A.shape[1] r[r < 0] += A.shape[1] column_indices = column_indices - r[:, np.newaxis] result = A[rows, column_indices]</code>
Dalam pendekatan ini, ogrid menjana grid indeks yang sepadan dengan baris dan lajur A. Dengan memanipulasi indeks lajur berdasarkan nilai anjakan negatif, operasi guling digunakan dengan berkesan pada setiap baris. Kaedah ini menawarkan penyelesaian yang sangat cekap untuk melancarkan baris matriks secara bebas, mengelakkan keperluan untuk gelung.
Atas ialah kandungan terperinci Bagaimana untuk Menggulung Baris Matriks Secara Bebas Menggunakan Pengindeksan Lanjutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!