首頁  >  文章  >  後端開發  >  如何正確使用Numpy的where函數進行多條件數組元素存取?

如何正確使用Numpy的where函數進行多條件數組元素存取?

Patricia Arquette
Patricia Arquette原創
2024-10-26 09:13:30868瀏覽

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

透過Numpy 的Where函數使用多個條件存取陣列元素

在NumPy 中使用陣列時,通常需要選擇性地存取基於在特定條件下。 where() 函數在這種情況下起著至關重要的作用,允許靈活選擇滿足給定條件的元素。

但是,如果 where() 的期望行為偏離預期,就會出現實例,從而導致錯誤或意想不到的結果。了解此函數的細微差別對於在 NumPy 中進行有效的陣列操作至關重要。

考慮以下程式碼片段:

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

此程式碼旨在選擇指定範圍內的距離 [r, r博士]。但是,它僅捕獲滿足第二個條件 dists <= r dr 的元素。要修正此問題,您可以將兩個條件轉換為單一條件或使用花式索引:

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

原始程式碼中的問題源自於 where() 的錯誤使用。與布林數組不同,where() 傳回索引列表。透過 和 組合兩個索引列表會產生第二個列表,有效地覆蓋第一個條件。

為了進一步清晰,請考慮以下內容:

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

a 和 b 的結果產生 b 。要獲得正確的布林數組,您需要使用按元素 & 運算符組合條件:

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

布林數組可用後,您可以利用它進行數組選擇:

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

以上是如何正確使用Numpy的where函數進行多條件數組元素存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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