我如何反向argsort指向原始未排序的数组?



我对自己没有自己弄清楚这一点感到恼火;这很可能是微不足道的。但无论如何,假设我有一个未排序的数组,和一个argsort来排序它:

a = array([83, 75, 60, 80, 20,  6,  37, 81,  7, 21])
p = a.argsort()
b = a[p]

所以数组b是数组a的排序版本。现在我有一个函数,它从排序列表中选择特定的值;假设函数返回列表

f = [0, 1, 2, 3, 6, 7]

这些是排序数组b的索引。但我该如何"反转"呢?排序,以便我可以获得指向a相应值的指标?在本例中,我们有

b[f]
[ 6  7 20 21 75 80]

a对应的指标为

af = [5, 8, 4, 9, 1, 3]

如何从fap中最容易地确定af?

你不需要反转任何东西。记住,pb中每个元素对应到a的索引。bf元素来源于pf元素索引的a:

a[p[f]]

也就是说

af = p[f]