Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menggabungkan Berbilang Keadaan dengan Berkesan di NumPy di ​​mana Fungsi?

Bagaimana untuk Menggabungkan Berbilang Keadaan dengan Berkesan di NumPy di ​​mana Fungsi?

Mary-Kate Olsen
Lepaskan: 2024-10-27 00:59:30
asal
354 orang telah melayarinya

How to Effectively Combine Multiple Conditions in NumPy's where Function?

Berbilang Syarat dalam Fungsi NumPy's where

Dalam NumPy, fungsi where() biasanya digunakan untuk pemilihan bersyarat. Apabila berhadapan dengan berbilang keadaan, adalah penting untuk memahami cara menggabungkannya dengan berkesan untuk mencapai hasil yang diingini.

Pertimbangkan contoh di mana kita ingin memilih jarak dalam julat yang ditentukan. Kod berikut cuba melakukan ini:

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

Walau bagaimanapun, ini menghasilkan hasil yang tidak dijangka, hanya memilih jarak dalam keadaan kedua (np.where(dists <= r dr)).

Membetulkan Kod

Untuk menyelesaikan isu ini, kita perlu memahami bahawa np.where() mengembalikan indeks elemen yang memenuhi syarat, bukan tatasusunan boolean. Oleh itu, menggabungkan hasil berbilang panggilan np.where() tidak menghasilkan tatasusunan boolean.

Kami boleh menggunakan pengendali Boolean mengikut elemen untuk melaksanakan pemilihan bersyarat yang diingini. Berikut ialah dua cara yang betul untuk melaksanakannya:

Pilihan 1: Gabungkan Syarat

<code class="python">dists[(dists >= r) & (dists <= r + dr)]
Salin selepas log masuk

Operator & melaksanakan mengikut elemen DAN, menghasilkan tatasusunan boolean. Kami kemudiannya boleh menggunakan ini untuk mengindeks dist tatasusunan asal.

Pilihan 2: Gunakan Pembolehubah Perantara

<code class="python">mask1 = dists >= r
mask2 = dists <= r + dr
dists[(mask1) & (mask2)]
Salin selepas log masuk

Dengan mencipta pembolehubah sementara untuk setiap syarat, kita boleh menyemak kedua-dua syarat dan gabungkannya menggunakan & operator untuk mencipta tatasusunan boolean.

Mengapa Kod Asal Tidak Berfungsi

Kod asal tidak berfungsi kerana np .where() mengembalikan senarai indeks, bukan tatasusunan boolean. Menggabungkan dua senarai indeks tidak memberikan hasil yang diingini.

Contohnya:

<code class="python">dists = np.arange(0, 10, 0.5)
r = 5
dr = 1

mask1 = np.where(dists >= r)
mask2 = np.where(dists <= r + dr)

print(mask1 and mask2)
# Outputs: (array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]),)</code>
Salin selepas log masuk

Seperti yang anda lihat, tatasusunan yang terhasil bukanlah tatasusunan boolean yang menunjukkan elemen yang memenuhi kedua-dua syarat.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Keadaan dengan Berkesan di NumPy di ​​mana Fungsi?. 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