Mengindeks Satu Tatasusunan dengan Satu Lagi dalam Numpy
Pertimbangkan dua matriks, A dan B , dengan A mengandungi nilai arbitrari dan B memegang indeks unsur dalam A. Tugasnya adalah untuk mengekstrak elemen daripada A berdasarkan indeks yang ditentukan oleh B. Pengindeksan ini membenarkan pengambilan elemen terpilih.
Penyelesaian menggunakan Pengindeksan Terperinci:
Pengindeksan lanjutan Numpy membolehkan operasi ini menggunakan ungkapan:
A[np.arange(A.shape[0])[:,None], B]
Pendekatan ini menggunakan gabungan indeks baris dan indeks lajur yang diambil daripada B untuk mendapatkan semula elemen dalam A.
Penyelesaian menggunakan Pengindeksan Linear:
Pendekatan alternatif melibatkan pengindeksan linear:
m, n = A.shape out = np.take(A, B + n*np.arange(m)[:,None])
Di sini, m dan n mewakili dimensi A, dan operasi dalam fungsi np.take() memastikan pengindeksan elemen yang betul berdasarkan B.
Contoh:
Mari kita gambarkan penyelesaian ini dengan contoh:
import numpy as np A = np.array([[2, 4, 5, 3], [1, 6, 8, 9], [8, 7, 0, 2]]) B = np.array([[0, 0, 1, 2], [0, 3, 2, 1], [3, 2, 1, 0]]) # Advanced indexing result1 = A[np.arange(A.shape[0])[:,None], B] # Linear indexing m, n = A.shape result2 = np.take(A, B + n*np.arange(m)[:,None]) print("Result using advanced indexing:") print(result1) print("Result using linear indexing:") print(result2)
Output:
Result using advanced indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]] Result using linear indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]]
Atas ialah kandungan terperinci Bagaimana untuk Mengindeks Satu Array Numpy oleh Yang Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!