Numpy argsort奇怪的指数

时间:2017-01-12 21:07:46

标签: 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,  0.13493432]))
array([4, 2, 0, 3, 1])

花了2个小时后,我确信这个问题要么太微不足道,要么太技术性。 我正在使用Anaconda虚拟环境并使用numpy 1.11.3和1.10.4进行测试

1 个答案:

答案 0 :(得分:0)

看起来你的印象是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)

这会产生与第一个数组所期望的行为相同的结果,但不会产生第二个数组的结果。