Numpy删除重复行

Numpy删除重复行,numpy,duplicates,row,Numpy,Duplicates,Row,我只需要删除数组中重复的行,但保留其中一行,我不能使用unique,因为我需要保持顺序。 范例 我需要这个输出 1 a234 125 1 a123 265 1 a145 167 2 a189 547 3 a678 567 3 a357 569 我想这就是你想要的,并使用np.unique和return\u index关键字参数: import numpy as np a = np.array([[1, 'a234', 125], [2, 'b189', 5

我只需要删除数组中重复的行,但保留其中一行,我不能使用unique,因为我需要保持顺序。 范例

我需要这个输出

1 a234 125
1 a123 265
1 a145 167    
2 a189 547
3 a678 567
3 a357 569

我想这就是你想要的,并使用
np.unique
return\u index
关键字参数:

import numpy as np

a = np.array([[1, 'a234', 125],
              [2, 'b189', 547],
              [1, 'a234', 125],
              [3, 'c678', 567],
              [1, 'a234', 125],
              [2, 'b189', 547]])

b = a.ravel().view(np.dtype((np.void, a.dtype.itemsize*a.shape[1])))
_, unique_idx = np.unique(b, return_index=True)

new_a = a[np.sort(unique_idx)]

>>> new_a
array([['1', 'a234', '125'],
       ['2', 'b189', '547'],
       ['3', 'c678', '567']], 
      dtype='|S4')

最常见的部分是视图
b
,它将每一行转换为
np的单个元素。void
dtype
,这样就可以通过
np比较整行是否相等。unique

您的行是否可以通过第一个列条目来区分?不,它们不是。。。关于这个问题,我做了一个更清晰的例子。@Ali\u Sce你不应该在你的代码中包含
>
以及此后的所有内容。我没有这样做。。。我是一个初学者,但我努力理解事物;)当我运行它时,我需要设置
new\u a=a[np.sort(unique\u idx[1])]
否则
unique\u idx
将是一个由两个数组组成的元组,剩下的就完美了!真的很讨厌,至少对我来说是这样!
import numpy as np

a = np.array([[1, 'a234', 125],
              [2, 'b189', 547],
              [1, 'a234', 125],
              [3, 'c678', 567],
              [1, 'a234', 125],
              [2, 'b189', 547]])

b = a.ravel().view(np.dtype((np.void, a.dtype.itemsize*a.shape[1])))
_, unique_idx = np.unique(b, return_index=True)

new_a = a[np.sort(unique_idx)]

>>> new_a
array([['1', 'a234', '125'],
       ['2', 'b189', '547'],
       ['3', 'c678', '567']], 
      dtype='|S4')