Bagaimana untuk Mengindeks Satu Tatasusunan NumPy oleh Yang Lain: Pengindeksan Lanjutan lwn Pengindeksan Linear?

Patricia Arquette
Lepaskan: 2024-11-10 13:23:03
asal
445 orang telah melayarinya

How to Index One NumPy Array by Another: Advanced Indexing vs. Linear Indexing?

Mengindeks Satu Tatasusunan dengan Satu Lagi dalam NumPy

Dalam pengkomputeran saintifik, memanipulasi tatasusunan berbilang dimensi ialah tugas biasa. Keupayaan pengindeksan lanjutan NumPy menyediakan alat yang berkuasa untuk operasi pengindeksan yang kompleks, menjadikannya mudah untuk mengekstrak data daripada tatasusunan berdasarkan nilai indeks yang disimpan dalam tatasusunan lain.

Pertimbangkan matriks A dengan nilai arbitrari dan matriks B yang mengandungi indeks unsur dalam A. Tugasnya adalah untuk memilih nilai daripada A yang ditunjuk oleh B, menghasilkan matriks C.

Satu pendekatan untuk mencapai ini adalah melalui NumPy's maju pengindeksan:

C = A[np.arange(A.shape[0])[:, None], B]
Salin selepas log masuk
  • np.arange(A.shape[0])[:, Tiada]: Mencipta tatasusunan indeks baris untuk A, dengan setiap lajur mewakili indeks baris yang sama.
  • [:, Tiada]: Kembangkan tatasusunan kepada tatasusunan 2D dengan dimensi tambahan untuk diselaraskan dengan B.

Pendekatan ini beroperasi dengan cekap pada tatasusunan besar tanpa memerlukan gelung.

Pengindeksan linear menyediakan kaedah lain untuk ini operasi:

m, n = A.shape
C = np.take(A, B + n * np.arange(m)[:, None])
Salin selepas log masuk
  • m, n = A.shape: Menyimpan dimensi A.
  • B n * np.arange(m)[:, Tiada]: Mengira indeks yang diratakan untuk setiap elemen dalam C berdasarkan indeks dalam B dan nombor baris.
  • np.take(A, ...): Mengeluarkan elemen daripada A menggunakan indeks yang diratakan.

Kedua-dua pengindeksan lanjutan dan pengindeksan linear menawarkan kaedah yang cekap untuk mengindeks satu tatasusunan dengan tatasusunan yang lain dalam NumPy.

Atas ialah kandungan terperinci Bagaimana untuk Mengindeks Satu Tatasusunan NumPy oleh Yang Lain: Pengindeksan Lanjutan lwn Pengindeksan Linear?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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