Bagaimana untuk Menggulung Baris Matriks Secara Bebas Menggunakan Pengindeksan Lanjutan?

Susan Sarandon
Lepaskan: 2024-10-21 14:11:30
asal
671 orang telah melayarinya

How to Roll Matrix Rows Independently Using Advanced Indexing?

Melancarkan Baris Matriks Secara Bebas dengan Pengindeksan Terperinci

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

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

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!

sumber:php
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!