通过其唯一值组合过滤二维numpy数组

时间:2020-06-03 19:50:13

标签: python performance numpy

我有一个非常大的2D数组,我需要对其唯一的组合进行过滤,因此numpy.unnique之类的东西不起作用。出于性能原因,我需要使用numpy解决方案。

>>> a # I have this
array([[ 0,  0,  0,  0, 31, 39],
       [ 0,  0,  0,  0, 32, 38],
       [ 0,  0,  0,  0, 33, 37],
       ...,
       [39, 30,  0,  1,  0,  0],
       [39, 30,  1,  0,  0,  0],
       [39, 31,  0,  0,  0,  0]])

>>> a # I something like this
array([[ 0,  0,  0,  0, 31, 39],
       [ 0,  0,  0,  0, 32, 38],
       [ 0,  0,  0,  0, 33, 37],
       ...,
       [39, 30,  0,  1,  0,  0],
       [39, 30,  1,  0,  0,  0]])

请注意,元素的顺序无关紧要;

2 个答案:

答案 0 :(得分:0)

事实上,我确实相信np.unique(a, axis=0)在对每一行中的元素进行排序之后可以满足您的要求。因此:

a.sort(axis=1)
result = np.unique(a, axis=0)

答案 1 :(得分:0)

尝试一下:

import numpy as np
res = np.unique(a, axis=0)
相关问题