重複卸下行我有一個(N,3)
陣列numpy的值:在一個NumPy的陣列
>>> vals = numpy.array([[1,2,3],[4,5,6],[7,8,7],[0,4,5],[2,2,1],[0,0,0],[5,4,3]])
>>> vals
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 7],
[0, 4, 5],
[2, 2, 1],
[0, 0, 0],
[5, 4, 3]])
我想從具有一個重複的值的數組中刪除行。例如,對於上述陣列的結果應該是:
>>> duplicates_removed
array([[1, 2, 3],
[4, 5, 6],
[0, 4, 5],
[5, 4, 3]])
我不知道如何與numpy的有效做到這一點沒有循環(數組可能會相當大)。任何人都知道我可以做到這一點?
通過「無循環」你是什麼意思?你必須檢查數組中的每一項,所以無論你用什麼樣的技巧來隱藏循環都是O(m * n)。 – agf
我認爲他意味着在Numpy中循環,而不是在Python中循環。編譯Numpy函數中的O(m * n)比Python for for循環中的O(m * n)快得多。當選項是編譯代碼和解釋代碼時,常量很重要。 –
['From your comments'](https://stackoverflow.com/questions/7438438/removing-duplicates-in-each-row-of-a-numpy-array/45136720#comment8994361_7438505),因爲您正在尋找推廣這個來處理通用編號。的列,你可能會發現['this solution'](https://stackoverflow.com/a/45136720/)這個問題值得一讀。 – Divakar