Numpy delete repeated rows
我只需要删除数组中重复的行,但要保留其中的一行,就不能使用unique,因为我需要保持顺序。
例子
1 2 3 4 5 6 7 8 9 | 1 a234 125 1 a123 265 1 a234 125 1 a145 167 1 a234 125 2 a189 547 2 a189 547 3 a678 567 3 a357 569 |
我需要此输出
1 2 3 4 5 6 | 1 a234 125 1 a123 265 1 a145 167 2 a189 547 3 a678 567 3 a357 569 |
我认为这可以满足您的要求,并且将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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') |
最讨厌的部分是视图