在NumPy中,有多种排序算法可用于对数组进行排序,包括快速排序、堆排序、归并排序等。
NumPy中的排序函数通常包括以下参数:
- a: 要排序的数组;
- axis: 沿着哪个轴进行排序,默认为-1,即沿着最后一个轴排序;
- kind: 排序算法,可选参数有'quicksort'(快速排序)、'mergesort'(归并排序)、'heapsort'(堆排序),默认为'quicksort';
- order: 指定按照哪个字段进行排序,当a是结构化数组时可用;
- dtype: 指定排序时使用的数据类型。
NumPy中常用的排序函数有sort()、argsort()、lexsort()和partition()等。
其中:
- sort()函数用于对数组进行排序
- argsort()函数返回按照排序后的结果,数组中元素的下标值
- lexsort()函数用于对多个序列进行排序
- partition()函数用于对数组进行部分排序,即将数组中的前k个最小值放到数组的最前面,其余元素随机排列。
下面是一些NumPy排序函数的演示示例:
import numpy as np
# sort()函数排序
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
arr_sorted = np.sort(arr)
print(arr_sorted)
# argsort()函数排序
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
idx = np.argsort(arr)
print(idx)
# lexsort()函数排序
a = np.array([3, 1, 4, 2])
b = np.array([50, 30, 40, 20])
c = np.array([400, 300, 200, 100])
idx = np.lexsort((a, b, c))
print(idx)
# partition()函数排序
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
arr_partitioned = np.partition(arr, 3)
print(arr_partitioned)
输出结果为:
[1 1 2 3 3 4 5 5 6 9]
[1 3 0 9 2 4 7 6 8 5]
[1 3 2 0]
[1 1 2 3 3 4 5 5 6 9]
需要注意的是,排序函数返回的是排序后的数组或者下标,原数组并不会改变,如果需要修改原数组,需要手动进行赋值操作。此外,当对多维数组进行排序时,需要指定沿着哪个轴进行排序,否则默认是沿着最后一个轴进行排序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NumPy最常用的两个数组排序方法 - Python技术站