Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah saya boleh menggunakan fungsi `np.where` NumPy untuk memilih elemen berdasarkan berbilang syarat?

Bagaimanakah saya boleh menggunakan fungsi `np.where` NumPy untuk memilih elemen berdasarkan berbilang syarat?

Patricia Arquette
Lepaskan: 2024-10-26 08:50:03
asal
919 orang telah melayarinya

How can I use NumPy's `np.where` function to select elements based on multiple conditions?

Numpy where Fungsi dengan Pelbagai Keadaan

Apabila berurusan dengan tatasusunan, fungsi np.where dalam NumPy boleh menjadi alat yang berguna untuk memilih tertentu unsur berdasarkan syarat tertentu. Walau bagaimanapun, kekeliruan boleh timbul apabila cuba menggunakan berbilang syarat secara serentak.

Pertimbangkan senario yang dibentangkan dalam soalan: matlamatnya ialah untuk memilih jarak dalam julat tertentu daripada tatasusunan yang dipanggil dist. Kod berikut telah dicuba:

dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]
Salin selepas log masuk

Walau bagaimanapun, kod ini hanya memilih jarak yang kurang daripada atau sama dengan r dr, bukan kedua-dua syarat. Untuk memahami sebab ini berlaku, adalah penting untuk ambil perhatian bahawa np.where mengembalikan senarai indeks, bukan tatasusunan boolean.

Membetulkan Kod

Cara yang betul untuk gunakan berbilang syarat dengan np.where adalah untuk mencipta tatasusunan boolean gabungan menggunakan pengendali mengikut unsur (& untuk DAN, | untuk ATAU), seperti yang ditunjukkan di bawah:

dists[(dists >= r) &amp; (dists <= r + dr)]
Salin selepas log masuk

Atau, jika hasilnya diperlukan secara khusus dalam bentuk indeks, gunakan sintaks berikut:

np.where((dists >= r) &amp; (dists <= r + dr))
Salin selepas log masuk

Mengapa Kod Asal Tidak Berfungsi

Jujukan kod yang terlibat dalam soalan asal menilai dua keadaan berasingan secara bebas: pertama, jarak lebih besar daripada atau sama dengan r, dan kemudian jarak kurang daripada atau sama dengan r dr. Walau bagaimanapun, kerana np.where mengembalikan indeks, menggabungkan keputusan kedua-dua syarat ini menggunakan dan menghasilkan pemilihan indeks sahaja daripada syarat kedua.

Untuk mencipta tatasusunan boolean yang menggabungkan syarat, mengikut elemen operator digunakan. Ini memastikan bahawa setiap elemen dalam tatasusunan adalah sama ada Betul atau Salah berdasarkan kedua-dua keadaan secara serentak.

Pendekatan Alternatif

Kaedah alternatif untuk memilih jarak dalam julat adalah dengan gunakan pengindeksan bersyarat, seperti yang ditunjukkan di bawah:

dists[abs(dists - (r + dr / 2.)) <= dr / 2.]
Salin selepas log masuk

Pilihan ini menyediakan penyelesaian yang lebih ringkas dan boleh dibaca dengan mencipta tatasusunan boolean yang menyemak sama ada setiap jarak berada dalam julat berpusat pada r.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan fungsi `np.where` NumPy untuk memilih elemen berdasarkan berbilang syarat?. 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