python 中 argsort 的排序问题(许多相同数据,浮点数据)?

       最近学习 机器学习实战 的过程中发现其中的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)

那这个排序规则到底是怎么样的呢?

猜你喜欢

转载自blog.csdn.net/cai1149735196/article/details/81198362