Python Numpy argsort奇怪索引

Python Numpy argsort奇怪索引,python,numpy,Python,Numpy,第一个输出是正确的。但不知何故,argsort为第二个数组提供了错误的输出: >>> np.argsort(np.array([ 0.62678927, 0.36816272, 0.31044763, 0.44873312, 0.3101446 ])) array([4, 2, 1, 3, 0]) >>> np.argsort(np.array([ 0.36816272, 0.62678927, 0.13509969, 0.54590815,

第一个输出是正确的。但不知何故,
argsort
为第二个数组提供了错误的输出:

>>> np.argsort(np.array([ 0.62678927,  0.36816272,  0.31044763,  0.44873312,  0.3101446 ]))
array([4, 2, 1, 3, 0])

>>> np.argsort(np.array([ 0.36816272,  0.62678927,  0.13509969,  0.54590815,  0.13493432]))
array([4, 2, 0, 3, 1])
在花了2个小时之后,我确信这个问题要么太琐碎,要么太技术化。
我使用的是Anaconda虚拟环境,并用numpy 1.11.3和1.10.4对其进行了测试。看起来您的印象是
np.argsort(x)
返回一个数组,使得
np.argsort(x)[I]
x[I]
按排序顺序排列的地方。这不是它的工作原理

np.argsort(x)
返回一个数组,使得
x[np.argsort(x)[i]]
按排序顺序进入位置
i
。这就产生了

x[np.argsort(x)]
相当于

np.sort(x)

这恰好产生了与第一个数组预期的行为相同的结果,但第二个数组却没有。

到底是什么问题?输出正确,为0.13493432<0.13509969<0.36816272<0.54590815<0.62678927。但结果似乎正确,您期望得到什么?感谢您的回答。但是我希望第二个命令返回
[2,4,1,3,0]
。由于0.6是最大值,因此它应该有一个与之关联的数字
4
。我遗漏了什么?但这将是数组排序后的索引,但
argsort
返回“将对数组排序的索引”(来源:)还要注意,您的预期结果与作为排列的
np.argsort
的输出正好相反;也就是说,您可以通过
s=np.argsort(a)
s\u inv=np.empty(5)
s\u inv[s]=np.arange(5)
获得预期结果。因此,非常不幸的是,在第一个例子中,
s[s]
恰好是
np.arange(5)