高效查找NumPy 數組中特定行的實例
使用NumPy 數組時,可能會遇到需要確定是否array 包含特定行,但ndarray 的標準contains 方法會引發問題。本文針對此問題提出了高效且 Python 的解決方案。
一種方法涉及使用 .tolist() 將 NumPy 數組轉換為 Python 列表,並對列表執行成員資格檢查。
a = np.array([[1,2],[10,20],[100,200]]) [1,2] in a.tolist() # Returns True [1,20] in a.tolist() # Returns False
另一種方法是使用數組上的視圖並應用 .all(1) 函數將每一行與目標行按元素進行比較。
any((a[:]==[1,2]).all(1)) # Returns True any((a[:]==[1,20]).all(1)) # Returns False
此外,可以在 NumPy 清單上產生潛在的效能提升。然而,如果沒有儘早找到結果,這種方法可能會效率低。
any(([1,2] == x).all() for x in a) # Stops on first occurrence
最後,NumPy 的邏輯函數提供了一種簡潔的方法來執行比較。
any(np.equal(a,[1,2]).all(1)) # Returns True
基準測試結果顯示無論命中或未命中情況如何,numpy 例程都會保持一致的搜尋速度。視圖、邏輯相等和 Python in 運算子方法在效率方面相當,但不建議使用 NumPy 上的生成器進行全數組搜尋。
以上是在 NumPy 數組中尋找特定行的有效方法:問題和解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!