Numpy删除重复行
我只需要删除数组中重复的行,但保留其中一行,我不能使用unique,因为我需要保持顺序。 范例 我需要这个输出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
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')