最近学习 机器学习实战 的过程中发现其中的argsort 函数排序的问题,就拿来测试。帮助文档 说排序方式是有小到大的索引值,但实际测试中加入 浮点数据(小数)。发现排序方式并没有按照预想中的由小到大排列,感觉较乱。或者说是数据中相同的数据比较多,排序有问题。本文只标记测试过程,没有结果,个人建议使用argsort排序时不要有太多相同数据。同时希望有人能够帮忙解决这个问题,那就感激不尽了。
下面是测试:
>>> a = [3,2,1,4,2.3,2.5,3.1]
>>> argsort(a)
array([2, 1, 4, 5, 0, 6, 3], dtype=int64)
测试的结果显示很乱,找不到规律
>>> a =[3, 2, 1, 4,2.3,2.5,3.1,3.5]
>>> argsort(a)
array([ 2, 1, 4, 5, 0, 6, 7, 3], dtype=int64)
将上述的 a 各项取整之后再排序,发现结果相同,如下所示:
>>> a = [3,2,1,4,2,2,3,3]
>>> argsort(a)
array([2, 1, 4, 5, 0, 6, 7, 3], dtype=int64)
但是测试的结果仍然让人摸不着头脑,相同的数字序号不是相连的,下面的测试能明显看出这一点:
>>> b = [1,2,1,1,1]
>>> argsort(b)
array([0, 2, 3, 4, 1], dtype=int64)
那这个排序规则到底是怎么样的呢?