我有一个(N,3)numpy值数组:
(N,3)
>>> 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有效地做到这一点而无需循环(数组可能会很大)。有人知道我该怎么做吗?
这是一个选择:
import 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]]) a = (vals[:,0] == vals[:,1]) | (vals[:,1] == vals[:,2]) | (vals[:,0] == vals[:,2]) vals = numpy.delete(vals, numpy.where(a), axis=0)