如何删除2D Numpy数组的一行中的重复值,同时也删除另一行中的对应值?

时间:2018-09-20 03:23:58

标签: python numpy

说我有一个二维的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行始终像上面一样按降序排序。

1 个答案:

答案 0 :(得分:4)

np.uniquereturn_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]])