如何根据第一列从数组中删除重复的行。

时间:2016-11-11 18:45:23

标签: python numpy

我有以下情况:

    >>> a # I have
    array([[0, 1],
           [0, 2],
           [0, 2],
           [1, 3],
           [1, 3],
           [2, 1]])
    >>> new_a # I want to get to
    array([[0, 1],
           [1, 3],
           [2, 1]])

基本上是一个纯粹的numpy解决方案,如果第一列中有重复的条目,如何删除整行。例如:第一行是[0,1],第二行是[0,2] - 由于0(第一列)是重复的,我想保留第一个实例并删除任何其他实例。

我确定我可以设置一些If语句和while循环 - 但我想知道是否有更优雅的解决方案。谢谢!

1 个答案:

答案 0 :(得分:6)

这是使用np.unique执行此操作的一种方法,沿第一列获取唯一项目的索引,然后沿着第一个轴使用索引切割数组:

_, indices = np.unique(arr[:, 0], return_index=True)
print(arr[indices, :])
# [[0 1]
#  [1 3]
#  [2 1]]