尽管 Python 有内置的 sort 和 sorted 函数可以对列表进行排序,但是这里不会介绍这两个函数,因为 NumPy 的 np.sort 函数实际上效率更高。默认情况下,np.sort 的排序算法是快速排序,其算法复杂度为
O
[
N
l
o
g
N
]
O[NlogN ]
O[NlogN],另外也可以选择归并排序和堆排序。对于大多数应用场景,默认的快速排序已经足够高效了。
如果想在不修改原始输入数组的基础上返回一个排好序的数组,可以使用 np.sort:
x = np.array([2, 1, 4, 3, 5]) np.sort(x)
输出结果:
array([1, 2, 3, 4, 5])
如果希望用排好序的数组替代原始数组,可以使用数组的 sort 方法:
x.sort() print(x)
输出结果:
[1 2 3 4 5]
另外一个相关的函数是 argsort,该函数返回的是原始数组排好序的索引值:
x = np.array([2, 1, 4, 3, 5]) i = np.argsort(x) print(i)
输出结果:
[1 0 3 2 4]
以上结果的第一个元素是数组中最小元素的索引值,第二个值给出的是次小元素的索引值,以此类推。这些索引值可以被用于(通过花哨的索引)创建有序的数组:
x[i]
输出结果:
array([1, 2, 3, 4, 5])



