📅  最后修改于: 2023-12-03 15:38:43.542000             🧑  作者: Mango
Numpy 是 Python 数值计算的基础库之一,提供了大量的数学和数组操作函数。在数据处理和机器学习中,经常需要对数组进行排序。本文将介绍 Numpy 数组排序的相关知识和方法。
在 Numpy 中,可以使用 numpy.sort
函数对数组进行排序。其基本语法如下:
numpy.sort(a, axis=-1, kind=None, order=None)
其中,a
表示需要进行排序的数组;axis
表示排序沿着哪个轴进行,默认为最后一个轴;kind
表示排序算法的种类,可以是 'quicksort'
或者 'mergesort'
;order
表示排序的字段。
该函数将返回一个排序后的数组。
另外,Numpy 还提供了 ndarray.sort
方法,可以直接对数组进行排序。其基本语法为:
ndarray.sort(axis=-1, kind=None, order=None)
与 numpy.sort
函数不同的是,该方法不会返回排序后的数组,而是直接将原始数组排序。
接下来,我们通过实例演示如何使用 Numpy 对数组进行排序。
首先,我们来看一维数组的排序。假设我们有一个长度为 10 的一维数组:
import numpy as np
a = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3])
我们可以使用 numpy.sort
函数对该数组进行排序:
b = np.sort(a)
print(b)
输出结果为:
[1 1 2 3 3 4 5 5 6 9]
我们也可以使用 ndarray.sort
方法:
a.sort()
print(a)
输出结果与上面相同。
对于多维数组,Numpy 的排序函数默认沿着最后一个轴进行排序。下面我们来看一个二维数组的例子:
c = np.array([[3, 1, 4], [1, 5, 9], [2, 6, 5]])
我们可以使用 numpy.sort
函数对该数组进行排序:
d = np.sort(c)
print(d)
输出结果为:
[[1 3 4]
[1 5 9]
[2 5 6]]
在这里,每一行都被排序了。
如果要按列排序,可以指定 axis
参数:
e = np.sort(c, axis=0)
print(e)
输出结果为:
[[1 1 4]
[2 5 5]
[3 6 9]]
在这里,每一列都被排序了。
注意,如果使用 ndarray.sort
方法,同样需要指定 axis
参数。
有时候,我们需要按照某个字段对数组进行排序。例如,在一个二维数组中,每一行包含了一个人的姓名、年龄和身高:
person = np.array([('Alice', 25, 172), ('Bob', 18, 168), ('Charlie', 35, 182), ('David', 29, 175)], dtype=[('name', 'S10'), ('age', int), ('height', float)])
我们想按照年龄来对数组进行排序,可以这样写:
person.sort(order='age')
print(person)
输出结果为:
[(b'Bob', 18, 168.) (b'Alice', 25, 172.) (b'David', 29, 175.) (b'Charlie', 35, 182.)]
在这里,按照年龄的大小进行了排序。注意,我们使用了 dtype=[('name', 'S10'), ('age', int), ('height', float)]
来定义了字段的名字和类型。
Numpy 提供了多种方法对数组进行排序,包括 numpy.sort
函数和 ndarray.sort
方法。我们可以通过指定 axis
参数和 order
参数来完成各种排序需求。掌握这些知识,可以让我们更加方便地处理数据和进行机器学习任务。