numpy数组argsort排序不正确

时间:2018-06-26 14:21:33

标签: python-3.x numpy

环境:Python 3.6.5,Jupyter 4.4.0 使用scikit-learn lda并尝试对组件主题进行排序;但是,我在使用argsort()时始终遇到奇怪的结果

我的调试代码是:

testArray = np.array([4.09999998, 0.1, 0.10000539, 0.1, 0.1, 0.1, 0.10000231, 0.1, 0.10000264, 0.1, 0.1, 0.10000064, 0.1, 0.10000592, 0.1, 0.10000874, 4.70374711, 0.1, 0.10000692, 0.1, 0.1, 0.1, 0.10000971, 0.1, 0.1, 0.10000581, 0.1000008, 0.10000729, 0.1, 4.099977, 12.76810792, 0.1, 2.47658459, 4.09995712, 0.10001568, 0.10000793])
print(testArray)
print(testArray.argsort())

变量testArray包含以下内容:

[4.09999998  0.1         0.10000539  0.1         0.1         0.1
  0.10000231  0.1         0.10000264  0.1         0.1         0.10000064
  0.1         0.10000592  0.1         0.10000874  4.70374711  0.1
  0.10000692  0.1         0.1         0.1         0.10000971  0.1
  0.1         0.10000581  0.1000008   0.10000729  0.1         4.099977
 12.76810792  0.1         2.47658459  4.09995712  0.10001568  0.10000793 ]

testArray.argsort()返回:

[17 23 21 20 19 28 31 14 24 10 12  7  5  4  3  1  9 11 26  6  8  2 25 13
 18 27 35 15 22 34 32 33 29  0 16 30]

但是,这不是正确的排序顺序。如果将主题转储到电子表格中并进行排序,则会得到以下顺序:

[30 16  0 29 33 32 34 22 15 35 27 18 13 25  2  8  6 26  
11  1  3  4  5  7  9 10 12 14 17 19 20 21 23 24 28 31]

这是一个错误吗?还是我需要使用其他方法对浮点数的numpy数组进行排序? ...是的,我已经搜索过StackOverflow,但没有发现有关此问题的任何问题。

excel的

capture显示数据: It works so much better when I don't mess up the excel macros

1 个答案:

答案 0 :(得分:0)

没有错误。

0.1出现的次数最多,使用series时可以任意顺序出现。就较大的数字而言,numpy的顺序是递增的,而excel的顺序似乎是递减的-numpy的顺序中的最后几个索引与excel的前几个索引相同。