我对自己没有自己弄清楚这一点感到恼火;这很可能是微不足道的。但无论如何,假设我有一个未排序的数组,和一个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]
如何从f
、a
和p
中最容易地确定af
?
你不需要反转任何东西。记住,p
是b
中每个元素对应到a
的索引。b
的f
元素来源于p
的f
元素索引的a
:
a[p[f]]
也就是说
af = p[f]