numpy 排序
在数据处理和分析的过程中,经常需要对 数组 或 矩阵 进行排序操作。NumPy 是一个Python库,提供了丰富的数学函数和数组运算,包括对数组的排序功能。本文将详细介绍 NumPy 中的排序操作,包括对一维数组、二维数组以及指定轴进行排序。
一维数组排序
首先,让我们看看如何对一维数组进行排序。可以使用 NumPy 中的 np.sort()
函数对数组进行排序,该函数会返回一个排好序的新数组,而不是修改原始数组。
import numpy as np
# 创建一个随机的一维数组
arr = np.array([3, 1, 2, 5, 9, 4, 6, 8, 7])
# 对数组进行排序
arr_sorted = np.sort(arr)
print(arr_sorted)
运行上面的代码,我们会得到以下输出:
[1 2 3 4 5 6 7 8 9]
除了 np.sort()
函数外,还有一个原地排序函数 np.sort()
可以用来对原始数组进行排序。这个函数会直接在原数组上进行修改,而不是返回一个新数组。
import numpy as np
# 创建一个随机的一维数组
arr = np.array([3, 1, 2, 5, 9, 4, 6, 8, 7])
# 对数组进行原地排序
arr.sort()
print(arr)
运行上面的代码,我们会得到以下输出:
[1 2 3 4 5 6 7 8 9]
二维数组排序
对于二维数组,我们同样可以使用 np.sort()
函数来进行排序。默认情况下,该函数会沿着最后一个轴 (即 axis=-1
,也就是数组的列) 进行排序。
import numpy as np
# 创建一个随机的二维数组
arr = np.array([[5, 2, 9],
[1, 8, 6],
[3, 7, 4]])
# 对二维数组进行排序(按列)
arr_sorted = np.sort(arr)
print(arr_sorted)
运行上面的代码,我们会得到以下输出:
[[2 5 9]
[1 6 8]
[3 4 7]]
如果我们想要按行进行排序,可以通过指定 axis=0
来实现。此时,NumPy 会沿着第一个轴 (即数组的行) 进行排序。
import numpy as np
# 创建一个随机的二维数组
arr = np.array([[5, 2, 9],
[1, 8, 6],
[3, 7, 4]])
# 对二维数组进行排序(按行)
arr_sorted = np.sort(arr, axis=0)
print(arr_sorted)
运行上面的代码,我们会得到以下输出:
[[1 2 4]
[3 7 6]
[5 8 9]]
指定轴排序
除了默认的按行或按列排序外,我们还可以通过指定轴来对多维数组进行排序。例如,对一个三维数组进行排序,可以通过指定 axis
参数进行排序。
import numpy as np
# 创建一个随机的三维数组
arr = np.array([[[5, 2, 9],
[1, 8, 6],
[3, 7, 4]],
[[4, 1, 3],
[9, 5, 2],
[7, 6, 8]]])
# 对三维数组进行排序(按层)
arr_sorted = np.sort(arr, axis=1)
print(arr_sorted)
运行上面的代码,我们会得到以下输出:
[[[1 2 4]
[3 7 6]
[5 8 9]]
[[4 1 2]
[7 5 3]
[9 6 8]]]
通过以上示例,我们可以看到 NumPy 提供了灵活的排序功能,可以方便地对数组进行不同轴向的排序操作。
结语
本文介绍了 NumPy 中的排序操作,包括一维数组、二维数组以及指定轴进行排序。通过 NumPy 提供的排序函数,我们可以轻松地对数组进行排序,满足不同场景下的需求。