numpy where Berfungsi dengan Berbilang Syarat
Dalam numpy, fungsi where membenarkan untuk menapis tatasusunan berdasarkan keadaan. Walau bagaimanapun, apabila cuba menggunakan berbilang syarat menggunakan operator logik seperti & dan |, hasil yang tidak dijangka mungkin berlaku.
Pertimbangkan kod berikut:
import numpy as np dists = np.arange(0, 100, 0.5) r = 50 dr = 10 # Attempt to select distances within a range result = dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]
Kod ini cuba memilih jarak antara r dan r dr. Walau bagaimanapun, ia hanya memilih jarak yang memenuhi syarat kedua, dists <= r dr.
Sebab Kegagalan:
Fungsi numpy where mengembalikan indeks elemen yang memenuhi syarat, bukan tatasusunan boolean. Apabila menggabungkan berbilang pernyataan di mana menggunakan operator logik, output ialah senarai indeks yang memenuhi syarat masing-masing. Melakukan dan operasi pada senarai ini menghasilkan set indeks kedua, dengan berkesan mengabaikan syarat pertama.
Pendekatan Betul:
Untuk menggunakan berbilang syarat, gunakan perbandingan mengikut unsur secara terus:
dists[(dists >= r) & (dists <= r + dr)]
Sebagai alternatif, buat tatasusunan boolean untuk setiap keadaan dan lakukan operasi logik padanya:
condition1 = dists >= r condition2 = dists <= r + dr result = dists[condition1 & condition2]
Pengindeksan mewah juga membolehkan penapisan bersyarat:
result = dists[(condition1) & (condition2)]
Dalam kes tertentu, memudahkan syarat menjadi satu kriteria mungkin berfaedah, seperti dalam contoh berikut:
result = dists[abs(dists - r - dr/2.) <= dr/2.]
Oleh memahami gelagat fungsi where, pengaturcara boleh menapis tatasusunan dengan berkesan berdasarkan berbilang keadaan dalam numpy.
Atas ialah kandungan terperinci Cara Menapis Tatasusunan Numpy dengan Berbilang Syarat: Mengapa `np.where()` Gagal dan Cara Mencapai Keputusan yang Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!