这里有两个问题;一个是np.argsort
返回的是一个索引数组,可以用来对原始数组进行排序;第二个是它不会修改原始数组,而只是提供另一个数组。下面的交互会话应该可以帮助解释:
In [59]: arr = [5,3,7,2,6,34,46,344,545,32,5,22]
In [60]: np.argsort(arr)
Out[60]: array([ 3, 1, 0, 10, 4, 2, 11, 9, 5, 6, 7, 8])
上面的
[3, 1, 0, ...]
意味着原始列表中的第
3
项应该首先出现(即
2
),然后应该出现第二项(即
3
),然后是第一项(索引为
0
,项为
5
),以此类推。请注意,
arr
数组并没有受到影响。
In [61]: arr
Out[61]: [5, 3, 7, 2, 6, 34, 46, 344, 545, 32, 5, 22]
您可能不需要这个索引数组,更容易使用
np.sort
函数:
In [62]: np.sort(arr)
Out[62]: array([ 2, 3, 5, 5, 6, 7, 22, 32, 34, 46, 344, 545])
但这仍然让
arr
独自一人:
In [68]: arr
Out[68]: [5, 3, 7, 2, 6, 34, 46, 344, 545, 32, 5, 22]
如果你想原地修改 (即修改原始文件),请使用以下命令:
In [69]: arr.sort()
In [70]: arr
Out[70]: [2, 3, 5, 5, 6, 7, 22, 32, 34, 46, 344, 545]
arr.sort()
进行原地排序。 - Bi Rico