Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menggunakan Fungsi `where` Numpy dengan Betul untuk Akses Elemen Tatasusunan Berbilang Keadaan?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-26 09:13:30868semak imbas

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

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.]
<code class="python">dists[(dists >= r) & (dists <= r+dr)]

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)

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

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

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

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!

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