从2D阵列中删除交换的重复项

时间:2019-09-06 23:44:53

标签: python numpy

如果我有一个numpy数组

[[0 1] 
[0 5] 
[1 0] 
[1 2]
[2 1] 
[2 3] 
[2 4]
[2 5]
[3 2]
[3 4]
[4 2]
[4 3]
[5 0]
[5 2]]

由于[0,1]和[1,0]都存在,因此我想删除其中任何一个。

所以基本上,如果数组中的[x,y] = [y,x],则删除[x,y]或[y,x]中的任何一个

最终输出应为

[[0 1] 
[0 5]
[1 2]
[2 3]
[2 4]
[2 5]
[3 4]]

已删除的元素应为

[[1 0]
[2 1]
[3 2]
[4 2]
[4 3]
[5 0]
[5 2]]

1 个答案:

答案 0 :(得分:1)

沿轴0排序,然后将uniquereturn_index一起进行重复数据删除。

u = np.sort(arr, axis=1)

_, idx = np.unique(u, axis=0, return_index=True)

arr[idx]

array([[0, 1],
       [0, 5],
       [1, 2],
       [2, 3],
       [2, 4],
       [2, 5],
       [3, 4]])