Cara Menggunakan Fungsi `where` Numpy dengan Betul untuk Akses Elemen Tatasusunan Berbilang Keadaan?

Patricia Arquette
Lepaskan: 2024-10-26 09:13:30
asal
879 orang telah melayarinya

 How to Correctly Use Numpy's `where` Function for Multi-Condition Array Element Access?

Mengakses Elemen Tatasusunan Menggunakan Pelbagai Keadaan dengan Fungsi Numpy's Where

Apabila bekerja dengan tatasusunan dalam NumPy, selalunya perlu untuk mengakses elemen secara terpilih berdasarkan pada syarat-syarat tertentu. Fungsi where() memainkan peranan penting dalam senario ini, membenarkan pemilihan elemen fleksibel yang memenuhi kriteria yang diberikan.

Walau bagaimanapun, keadaan timbul apabila tingkah laku yang dikehendaki where() menyimpang daripada jangkaan, membawa kepada ralat atau keputusan yang tidak dijangka. Memahami nuansa fungsi ini adalah penting untuk manipulasi tatasusunan yang berkesan dalam NumPy.

Pertimbangkan coretan kod berikut:

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

Kod ini bertujuan untuk memilih jarak dalam julat tertentu [r, r dr]. Walau bagaimanapun, ia hanya menangkap elemen yang memenuhi syarat kedua dists <= r dr. Untuk membetulkannya, anda boleh sama ada menukar kedua-dua kriteria kepada satu syarat atau menggunakan pengindeksan mewah:

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

Isu dalam kod asal berpunca daripada penggunaan where() yang salah. Tidak seperti tatasusunan boolean, where() mengembalikan senarai indeks. Menggabungkan dua senarai indeks melalui dan menghasilkan senarai kedua, dengan berkesan mengatasi syarat pertama.

Untuk kejelasan lanjut, pertimbangkan perkara berikut:

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

Hasil a dan b menghasilkan b . Untuk mendapatkan tatasusunan boolean yang betul, anda perlu menggabungkan syarat menggunakan elementwise & operator:

<code class="python">dists >= r &amp; dists <= r + dr
Salin selepas log masuk

Setelah tatasusunan boolean tersedia, anda boleh menggunakannya untuk pemilihan tatasusunan:

<code class="python">dists[dists >= r &amp; dists <= r + dr]</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Cara Menggunakan Fungsi `where` Numpy dengan Betul untuk Akses Elemen Tatasusunan Berbilang Keadaan?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!