对一个数组进行排序以适应另一个具有numpy

时间:2015-05-04 17:26:59

标签: python arrays sorting numpy

这里有很多关于排序数组的问题,但是我找不到解决问题的问题(这让我希望我没有想到复杂的方法)。所以我们走了:

我有两个数值相等但排列顺序不同的数组:

a = np.array([4, 2, 5, 6])
# b = np.random.permutation(a)  # general case
b = np.array([5, 2, 6, 4])

我需要将b排序为a的索引,所以这里:

ind = np.array([3, 1, 0, 2])

请注意,我不想更改。

1 个答案:

答案 0 :(得分:3)

broadcasting&的一种方法np.where -

_,C = np.where(a[:,None] == b)

示例运行 -

In [210]: a = np.array([4, 2, 5, 6])

In [211]: b = np.array([5, 2, 6, 4])

In [212]: _,C = np.where(a[:,None] == b)

In [213]: C
Out[213]: array([3, 1, 0, 2], dtype=int64)