numpy.argsort以随机顺序给出结果

时间:2016-01-11 01:41:50

标签: python sorting numpy

我试图使用numpy.argsort()简单地对数组或列表进行排序。出于某种原因,它以随机顺序给我结果:

import numpy

unsorted_list = [1.19021287, 1.19021287, 1.15190644, 1.12193492, 1.19021287, 1.25190644]
sorted_list = numpy.argsort(unsorted_list)
print sorted_list
array([3, 2, 0, 1, 4, 5])

它应该返回array([0, 1, 4, 3, 5, 4])

1 个答案:

答案 0 :(得分:5)

numpy.argsort做了什么?

  

numpy.argsort(a, axis=-1, kind='quicksort', order=None)

     

返回对数组进行排序的 indices

     

使用kind关键字指定的算法沿给定轴执行间接排序。它返回一个与a形状相同的索引数组,它按排序顺序索引给定轴的数据。

所以它给了你索引,它会对数组进行排序,从数组中的最小值到最大值。对于您给定的数组,这些是:

[3, 2, 0, 1, 4, 5]

对应于值:

3 -> 1.12193492
2 -> 1.15190644
0 -> 1.19021287
1 -> 1.19021287
4 -> 1.19021287
5 -> 1.25190644

因此,例如,添加尾随0将导致返回以下索引:

[6 3 2 0 1 4 5]