重复卸下行我有一个(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