Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Mary-Kate Olsenasal
2024-10-27 00:59:30262semak imbas

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

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

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

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>

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!

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