我不确定如何在中做到最好numpy
,但是在纯Python中,推理将是:
aargsort
正在range(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]
>>>
即sorted(x)
will的第一个参数是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']
>>>
当然,会有更严格,更快速的方式来表达它numpy
(不幸的是,我对Python本身的了解不多,我不了解Python本身;-),但是我希望通过展示“您需要执行的操作。