首頁 >後端開發 >Python教學 >如何確定 Numpy 陣列是否包含特定行?

如何確定 Numpy 陣列是否包含特定行?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-21 18:29:021005瀏覽

How to Determine if a Numpy Array Contains a Specific Row?

尋找 Numpy 陣列是否包含特定行

使用 Numpy 陣列時,有時需要驗證特定行是否存在陣列內。與標準 Python 清單不同,Numpy 陣列提供了獨特的細微差別,在執行此類檢查時需要專門的方法。

Numpy 數組差異

與Python 數組不同,Numpy 數組在以下情況下表現出不同的行為:使用in 運算符測試行是否存在:

<code class="python"># Python Array
a = [[1, 2], [10, 20], [100, 200]]
[1, 2] in a  # True
[1, 20] in a  # False

# Numpy Array
a = np.array([[1, 2], [10, 20], [100, 200]])
np.array([1, 2]) in a  # True
np.array([1, 20]) in a  # True  (Unexpected)</code>

高效方法

要有效檢查Numpy 數組中的行是否存在,請考慮以下方法:

  • .tolist () 轉換: 將Numpy 數組轉換為列表,然後在列表上使用in 運算符:
<code class="python">[1, 2] in a.tolist()  # True
[1, 20] in a.tolist()  # False</code>
  • Numpy 視圖: 使用數組的視圖快速檢查行是否存在:
<code class="python">any((a[:]==[1,2]).all(1))  # True
any((a[:]==[1,20]).all(1))  # False</code>
  • Numpy 上的產生器: 在每行上產生陣列並與目標行進行比較:
<code class="python">any(([1, 2] == x).all() for x in a)  # Stops on first occurrence</code>
  • Numpy 邏輯函數: 利用Numpy 邏輯函數來執行比較:
<code class="python">any(np.equal(a, [1, 2]).all(1))  # True</code>

效能注意事項

效能注意事項
early hit: [9000, 9001, 9002] in 300,000 elements:
    view: 0.01002 seconds
    python list: 0.00305 seconds
    gen over numpy: 0.06470 seconds
    logic equal: 0.00909 seconds

late hit: [899970, 899971, 899972] in 300,000 elements:
    view: 0.00936 seconds
    python list: 0.30604 seconds
    gen over numpy: 6.47660 seconds
    logic equal: 0.00965 seconds
效能注意事項

效能注意事項效能注意事項效能注意事項

效能注意事項

效能注意事項

效能注意事項效能注意事項效能注意事項效能注意事項效能>這些方法的效能因陣列的大小和結構而異。以下是300,000 x 3 數組的一些計時:結論為了在Numpy 數組中進行有效的行存在檢查,建議使用. tolist() 、Numpy 視圖或Numpy 邏輯函數方法。應避免使用生成器方法,因為它的效能開銷很大。

以上是如何確定 Numpy 陣列是否包含特定行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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