恢复向量的排列

时间:2019-06-28 18:28:43

标签: python numpy sorting permutation

在numpy中,我如何有效地恢复排序算法对向量所应用的排列,以使得在所得向量中的每个索引处,我都有一个代表该索引的整数,该原始向量在应用后会投影到该向量排序算法。

>>>import numpy as np

>>> my_vector = np.random.random_integers(1,50,size=5)
>>> my_vector
array([23, 20, 33, 38, 27])

>>> my_v_sorted = np.sort(my_vector)
>>> my_v_sorted
array([20, 23, 27, 33, 38])

>>> what_i_want = np.array([1,0,4,5,3])

我想不管是否实际上需要排序才能做到这一点,我只想将我的向量的条目映射到排序后的向量中的结果索引,欢呼!

1 个答案:

答案 0 :(得分:2)

您可以使用np.argsort()

import numpy as np

my_vector = np.array([23, 20, 33, 38, 27])

my_v_sorted = np.sort(my_vector)

what_i_want = np.argsort(my_vector)

这将为您提供以下输出

>>> my_v_sorted
>>> array([20, 23, 27, 33, 38])

>>> what_i_want
>>> array([1, 0, 4, 2, 3])