Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengekstrak Elemen daripada Tatasusunan Berdasarkan Indeks dalam Tatasusunan Lain Menggunakan Pengindeksan Tatasusunan Integer?

Bagaimana untuk Mengekstrak Elemen daripada Tatasusunan Berdasarkan Indeks dalam Tatasusunan Lain Menggunakan Pengindeksan Tatasusunan Integer?

Linda Hamilton
Linda Hamiltonasal
2024-11-09 02:55:02866semak imbas

How to Extract Elements from an Array Based on Indices in Another Array Using Integer Array Indexing?

Menggunakan Pengindeksan Tatasusunan Integer untuk Mengekstrak Elemen Berdasarkan Indeks Tatasusunan Sekunder

Dalam senario yang diberikan, matlamatnya adalah untuk mendapatkan semula elemen tertentu daripada tatasusunan A menggunakan indeks yang ditentukan dalam tatasusunan kedua B. Daripada bergantung pada np.take atau np.choose, lebih banyak pendekatan mudah ialah menggunakan pengindeksan tatasusunan integer NumPy:

A[np.arange(A.shape[0]),B.ravel()]

Begini cara kod ini mencapai hasil yang diingini:

  • np.arange(A.shape[0]) mencipta tatasusunan indeks daripada 0 hingga (A.shape[0] - 1), mewakili baris A.
  • B.ravel() meratakan B menjadi tatasusunan satu dimensi, memastikan ia mempunyai bilangan elemen yang sama seperti baris dalam A.
  • Operasi pengindeksan A[... ] mendapatkan semula elemen daripada A menggunakan indeks baris dan indeks lajur daripada B.

Pendekatan ini amat berguna apabila B ialah 1D tatasusunan atau senarai indeks lajur. Dengan melangkau operasi merata, kod menjadi lebih mudah:

A[np.arange(A.shape[0]),B]

Contoh:

A = np.array([[0, 1], [2, 3], [4, 5]])
B = np.array([1, 0, 1])

result = A[np.arange(A.shape[0]), B]

print(result)
# Output: [1, 2, 5]

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Elemen daripada Tatasusunan Berdasarkan Indeks dalam Tatasusunan Lain Menggunakan Pengindeksan Tatasusunan Integer?. 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