说我有一个二维的numpy数组,看起来像这样
x = np.array( [[ 3 , 4, 2 ,4, 7, 9, 7, 5, 2, 1, 7 ], [ 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1] ])
print(x)
>[[ 3 4 2 4 7 9 7 5 2 1 7]
> [11 10 9 8 7 6 5 4 3 2 1]]
我想在第一行中删除重复的数字,并在第二行中删除相应的数字。未删除的数字是最大的数字(从第二行开始)。
这就是我想要输出的样子。
>[[ 3 4 2 7 9 5 1 ]
> [11 10 9 7 6 4 2 ]]
第1行中的所有重复项以及第2行中的相应值均已删除。保留的值始终是第2行中的最大值。
如果有帮助,我们可以假设第2行始终像上面一样按降序排序。
答案 0 :(得分:4)
将np.unique
与return_index=True
一起使用:
_, idx = np.unique(x[0], return_index=1)
x[:, np.sort(idx)]
array([[ 3, 4, 2, 7, 9, 5, 1],
[11, 10, 9, 7, 6, 4, 2]])