根据numpy数组中的一个字段删除重复项

时间:2016-03-08 17:21:52

标签: arrays numpy

当numpy数组字段有重复项时,如何删除重复项。

例如,我有一个这样的数组:

vals = numpy.array([[1,2,3],[1,5,6],[1,8,7],[0,4,5],[2,2,1],[0,0,0],[5,4,3]])

array([[1, 2, 3],
       [1, 5, 6],
       [1, 8, 7],
       [0, 4, 5],
       [2, 2, 1],
       [0, 0, 0],
       [5, 4, 3]])

我需要删除字段[0]的重复项,以便得到如下结果:

([1,2,3],
[0, 4, 5],
[2, 2, 1],
[0, 0, 0],
[5, 4, 3]])

1 个答案:

答案 0 :(得分:5)

您可以使用numpy.unique

In [11]: vals
Out[11]: 
array([[1, 2, 3],
       [1, 5, 6],
       [1, 8, 7],
       [0, 4, 5],
       [2, 2, 1],
       [0, 0, 0],
       [5, 4, 3]])

In [12]: unique_keys, indices = np.unique(vals[:,0], return_index=True)

In [13]: vals[indices]
Out[13]: 
array([[0, 4, 5],
       [1, 2, 3],
       [2, 2, 1],
       [5, 4, 3]])

维持原始订单:

In [17]: vals[np.sort(indices)]
Out[17]: 
array([[1, 2, 3],
       [0, 4, 5],
       [2, 2, 1],
       [5, 4, 3]])