在数据分析和科学计算中,经常需要对数组中的数据进行排序。NumPy 提供了多种排序方法,如np.sort()、ndarray.sort()、argsort(),本文主要介绍 NumPy 数组排序的基本方法和常见用法。

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]

推荐文档