首頁 >後端開發 >Python教學 >如何在NumPy的where函數中有效組合多個條件?

如何在NumPy的where函數中有效組合多個條件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 00:59:30479瀏覽

How to Effectively Combine Multiple Conditions in NumPy's where Function?

NumPy 的 where 函數中的多個條件

NumPy 中,where() 函數常用於條件選擇。在處理多個條件時,了解如何有效地組合它們以獲得所需的結果非常重要。

考慮一個範例,我們想要選擇指定範圍內的距離。以下程式碼嘗試執行此操作:

<code class="python">dists[(np.where(dists >= r)) and (np.where(dists <p>但是,這會產生意外結果,僅選擇第二個條件 (np.where(dists </p>
<p><strong>修復程式碼</strong></p>
<p>要解決這個問題,我們需要了解 np.where() 傳回滿足條件的元素的索引,而不是布林數組。因此,組合多個 np.where() 呼叫的結果不會產生布林數組。 </p>
<p>我們可以使用元素布林運算子來執行所需的條件選擇。以下是兩種正確的實作方法:</p>
<p><strong>選項 1:組合條件</strong></p>
<pre class="brush:php;toolbar:false"><code class="python">dists[(dists >= r) & (dists <p>& 運算子執行元素與,產生布林數組。然後我們可以用它來索引原始數組 dists。 </p>
<p><strong>選項2:使用中間變數</strong></p>
<pre class="brush:php;toolbar:false"><code class="python">mask1 = dists >= r
mask2 = dists <p>透過為每個條件建立臨時變量,我們可以檢查兩個條件並使用& 運算子組合它們以建立布林數組。 </p>
<p><strong>為什麼原始程式碼不起作用</strong></p>
<p>原始程式碼不起作用,因為 np .where() 傳回索引列表,而不是布林數組。組合兩個索引列表不會給出所需的結果。 </p>
<p>例如:</p>
<pre class="brush:php;toolbar:false"><code class="python">dists = np.arange(0, 10, 0.5)
r = 5
dr = 1

mask1 = np.where(dists >= r)
mask2 = np.where(dists <p>如您所見,結果數組不是指示哪些元素滿足這兩個條件的布林數組。 </p></code>

以上是如何在NumPy的where函數中有效組合多個條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn