Python - numpy.sort() 函数
在 Python 中,numpy.sort() 函数用于沿指定轴对 NumPy 数组的元素进行排序。此函数默认按升序对数组进行排序,但也可以通过修改数组或使用其他方法按降序排序。
它适用于多维数组,并可灵活地对整个数组或单个行/列进行排序。
语法
以下是 Python numpy.sort() 函数的语法 -
numpy.sort(a, axis=-1, kind=None, order=None)
参数
以下是 Python numpy.sort() 函数的参数 -
- a:要排序的输入数组。
- order(可选):指定字段结构化数组的顺序。例如,按结构化数组中的多个字段排序。
- stable(可选):这是排序稳定性。如果为 True,则返回的数组将保持比较结果相等的 arr 值的相对顺序。如果为 False 或 None,则不保证这一点。在内部,此选项选择 kind='stable'。默认值为 None。
- axis(可选):排序的轴 -
- -1(默认值):沿最后一个轴排序。
- 0:沿列(垂直)排序。
- 1:沿行(水平)排序。
- kind(可选):指定排序算法。选项包括 -
- 快速排序(默认):快速但不稳定。
- 合并排序:稳定并保持相等元素的相对顺序。
- 堆排序:内存效率高,但比"快速排序"慢。
返回类型
此函数返回一个已排序的数组,如果输入未被修改,则返回一个新数组。
示例
以下是使用 Python numpy.sort() 函数对一维 NumPy 数组进行排序的基本示例 -
import numpy as np my_array = np.array([25, 5, 15, 10]) sorted_array = np.sort(my_array) print("原始数组:", my_array) print("排序后数组:", sorted_array)
输出
以下是上述代码的输出 -
原始数组:[25 5 15 10] 排序后数组:[ 5 10 15 25]
示例:沿轴排序
我们可以使用 axis 参数沿多维数组中的特定轴排序。以下示例演示了如何对行 (axis=1) 和列 (axis=0) 进行排序 -
import numpy as np my_array = np.array([[8, 2, 7], [4, 9, 1]]) sorted_row = np.sort(my_array, axis=1) sorted_col = np.sort(my_array, axis=0) print("原始数组: ", my_array) print("按行排序: ", sorted_row) print("按列排序: ", sorted_col)
输出
以下是上述代码的输出 -
原始数组: [[8 2 7] [4 9 1]] 按行排序: [[2 7 8] [1 4 9]] 按列排序: [[4 2 1] [8 9 7]]
示例:使用自定义数据类型排序
order 参数用于结构化数组。以下是按特定字段排序的示例 -
import numpy as np my_array = np.array([(1, 'Zebra', 100), (2, 'Apple', 50), (3, 'Monkey', 75)], dtype=[('id', int), ('name', 'U10'), ('score', int)]) sorted_by_name = np.sort(my_array, order='name') print("原始数组: ", my_array) print("按名称排序: ", sorted_by_name)
输出
以下是上述代码的输出 -
原始数组: [(1, 'Zebra', 100) (2, 'Apple', 50) (3, 'Monkey', 75)] 按名称排序: [(2, 'Apple', 50) (3, 'Monkey', 75) (1, 'Zebra', 100)]