我不知道如何最好地在numpy中做到这一点,但是在纯Python中,推理是:
aargsort正在持有范围(len(a))的排列,告诉你aSort的项目来自哪里 – 很像纯Python:
>>> x = list('ciaobelu')
>>> r = range(len(x))
>>> r.sort(key=x.__getitem__)
>>> r
[2, 4, 0, 5, 1, 6, 3, 7]
>>>
即,sort(x)的第一个参数将是x [2],第二个参数x [4]等等.
所以给出排序的版本,你可以通过“把物品放在他们来自哪里”来重构原稿:
>>> s = sorted(x)
>>> s
['a', 'b', 'c', 'e', 'i', 'l', 'o', 'u']
>>> original = [None] * len(s)
>>> for i, c in zip(r, s): original[i] = c
...
>>> original
['c', 'i', 'a', 'o', 'b', 'e', 'l', 'u']
>>>
当然,会有更加紧密和快速的方式来表达这个麻烦(不幸的是,我不知道内向外,就像我自己知道Python本身一样;-),但我希望这有助于显示“把东西放回原位”操作,你需要执行.