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 & dists <= r + dr
Setelah tatasusunan boolean tersedia, anda boleh menggunakannya untuk pemilihan tatasusunan:
<code class="python">dists[dists >= r & 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!