Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melakukan Penggulungan Bebas Baris Matriks Menggunakan Pengindeksan Lanjutan dalam NumPy?

Bagaimana untuk Melakukan Penggulungan Bebas Baris Matriks Menggunakan Pengindeksan Lanjutan dalam NumPy?

Barbara Streisand
Barbara Streisandasal
2024-10-21 14:15:02504semak imbas

How to Perform Independent Rolling of Matrix Rows Using Advanced Indexing in NumPy?

Rows Rolling Matrix Independent using Advanced Indexing

Memandangkan matriks A dan array r yang mengandungi nilai roll untuk setiap baris, matlamat anda adalah untuk gulung setiap baris A secara bebas menggunakan nilai gulungan tersebut.

Pendekatan paling berkesan untuk mencapai ini ialah melalui pengindeksan lanjutan dalam NumPy. Teknik ini melibatkan membina meshgrid baharu yang menggunakan nilai gulungan pada lajur A. Begini cara anda boleh melaksanakannya:

<code class="python">import numpy as np

# Define the matrix A and roll values r
A = np.array([[4, 0, 0],
              [1, 2, 3],
              [0, 0, 5]])
r = np.array([2, 0, -1])

# Create a meshgrid of rows and negative shifted columns
rows, column_indices = np.ogrid[:A.shape[0], :A.shape[1]]
r[r < 0] += A.shape[1]
column_indices = column_indices - r[:, np.newaxis]

# Use advanced indexing to apply the roll values
result = A[rows, column_indices]

# Print the result
print(result)</code>

Pendekatan ini menggunakan indeks lajur anjakan negatif untuk memastikan pengindeksan yang sah dan menggunakan nilai gulungan melalui meshgrid, menghasilkan matriks dengan baris bergolek bebas.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Penggulungan Bebas Baris Matriks Menggunakan Pengindeksan Lanjutan dalam NumPy?. 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