尋找 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 數組中的行是否存在,請考慮以下方法:
<code class="python">[1, 2] in a.tolist() # True [1, 20] in a.tolist() # False</code>
<code class="python">any((a[:]==[1,2]).all(1)) # True any((a[:]==[1,20]).all(1)) # False</code>
<code class="python">any(([1, 2] == x).all() for x in a) # Stops on first occurrence</code>
<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中文網其他相關文章!