Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengindeks Satu Tatasusunan NumPy oleh Yang Lain: Pengindeksan Lanjutan lwn Pengindeksan Linear?

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

Patricia Arquette
Patricia Arquetteasal
2024-11-10 13:23:03451semak imbas

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]
  • 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])
  • 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!

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