1、数组排序
NumPy 提供 np.sort() 函数用于对数组进行排序。
基本语法
np.sort(array, axis=-1)
参数说明:
array:需要排序的数组axis:排序方向axis=-1(默认):沿最后一个轴排序
示例:排序一维数组
import numpy as np arr=np.array([3, 2, 0, 1]) print(np.sort(arr))
输出:
[0 1 2 3]
⚠️ 注意:
np.sort()返回的是 排序后的新数组副本,不会修改原数组。
2、不同数据类型的排序
NumPy 不仅可以排序数字数组,也可以排序字符串和布尔数组。
示例:字符串排序
字符串按 字典序(alphabetical order) 排序。
import numpy as np arr=np.array(['banana', 'cherry', 'apple']) print(np.sort(arr))
输出:
['apple' 'banana' 'cherry']
示例:布尔数组排序
布尔值排序规则:
False < True
import numpy as np arr=np.array([True, False, True]) print(np.sort(arr))
输出:
[False True True]
3、排序二维数组
当对二维数组进行排序时,NumPy 默认 沿最后一个轴(每一行)进行排序。
示例:排序二维数组
import numpy as np
arr=np.array([[3, 2, 4],
[5, 0, 1]])
print(np.sort(arr))输出:
[[2 3 4]
[0 1 5]]
说明:
第一行排序 →
[2 3 4]第二行排序 →
[0 1 5]
即 每一行独立排序。
4、使用 axis 指定排序方向
可以通过 axis 参数指定排序方向。
| axis | 含义 |
|---|---|
| axis=0 | 按列排序 |
| axis=1 | 按行排序 |
示例:按列排序
import numpy as np
arr=np.array([[3, 2, 4],
[5, 0, 1]])
print(np.sort(arr, axis=0))
输出:
[[3 0 1]
[5 2 4]]
说明:
每一列独立排序。
示例:按行排序
print(np.sort(arr, axis=1))
输出:
[[2 3 4]
[0 1 5]]
5、使用 ndarray.sort()(原地排序)
NumPy 还有一个方法:
ndarray.sort()
与 np.sort() 不同:
| 方法 | 是否返回新数组 | 是否修改原数组 |
|---|---|---|
| np.sort() | 是 | 否 |
| arr.sort() | 否 | 是 |
示例:原地排序
import numpy as np arr=np.array([3, 2, 1]) arr.sort() print(arr)
输出:
[1 2 3]
6、argsort()(获取排序索引)
在数据分析和机器学习中,argsort() 非常常用。
作用是:
返回 排序后元素对应的索引位置
示例
import numpy as np arr=np.array([50, 20, 40, 10]) print(np.argsort(arr))
输出:
[3 1 2 0]
解释:
排序后的数组:
[10 20 40 50]
对应原数组索引:
10 -> index 3
20 -> index 1
40 -> index 2
50 -> index 0
7、根据索引排序数组
可以结合 argsort() 对数组进行排序。
arr=np.array([50, 20, 40, 10]) sorted_arr=arr[np.argsort(arr)] print(sorted_arr)
输出:
[10 20 40 50]