Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menapis Tatasusunan Numpy dengan Berbilang Syarat: Mengapa `np.where()` Gagal dan Cara Mencapai Keputusan yang Betul?

Cara Menapis Tatasusunan Numpy dengan Berbilang Syarat: Mengapa `np.where()` Gagal dan Cara Mencapai Keputusan yang Betul?

Barbara Streisand
Barbara Streisandasal
2024-10-26 10:27:02164semak imbas

 How to Filter Numpy Arrays with Multiple Conditions: Why `np.where()` Fails and How to Achieve Correct Results?

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:

  • Elemen- Perbandingan bijak:

Untuk menggunakan berbilang syarat, gunakan perbandingan mengikut unsur secara terus:

dists[(dists >= r) & (dists <= r + dr)]
  • Tasusunan Boolean:

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 Fancy:

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!

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