NumPy 分区函数

Beginner

介绍

在本实验中,你将学习 Numpy 库中的 numpy.partition() 函数。该函数用于根据给定的参数对输入数组进行分区,并返回输入数组的分区副本。当我们想要快速找到数组中第 k 个最小或最大的元素,而不需要对整个数组进行排序时,numpy.partition() 函数非常有用。

虚拟机提示

虚拟机启动完成后,点击左上角切换到 Notebook 选项卡,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟,直到 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,可以随时向 Labby 寻求帮助。请在实验结束后提供反馈,我们将及时为你解决问题。

导入 Numpy 库

首先,我们需要导入 Numpy 库,它通常用于在 Python 中处理数组和矩阵。

import numpy as np

创建输入数组

接下来,我们将使用 Numpy 的 array() 方法创建一个输入数组。这个数组将是我们使用 numpy.partition() 函数的起点。

inp_ar = np.array([2, 0, 1, 5, 4, 9, 78, 34])
print("The input array:")
print(inp_ar)

对数组进行分区

现在,我们将使用 numpy.partition() 函数对输入数组 inp_ar 进行分区,以第 5 个最小的数为基准。我们还将打印出分区后的结果数组。

output = np.partition(inp_ar, 5)
print("The partitioned array:")
print(output)

使用多个 Kth 值对数组进行分区

numpy.partition() 函数还支持围绕多个 kth 值进行分区。在本示例中,我们将围绕第 1 个和第 3 个最小的数对数组进行分区。

arr = np.array([7, 4, 8, 1, 10, 13])
print("The input array:")
print(arr)

output = np.partition(arr, (1, 3))
print("The partitioned array:")
print(output)

指定轴、排序类型和顺序

numpy.partition() 函数还提供了可选参数,允许你指定沿哪个轴进行分区、执行的排序类型以及字段的比较顺序。在本示例中,我们将使用这些可选参数对二维数组沿第二个轴进行分区,并指定排序类型和顺序。

arr_2d = np.array([[4, 5, 2], [3, 1, 6]])
print("The input 2D array:")
print(arr_2d)

output = np.partition(arr_2d, 1, axis=1, kind='heapsort', order=('col1', 'col2', 'col0'))
print("The partitioned 2D array:")
print(output)

使用负 Kth 值进行分区

numpy.partition() 函数还可以处理 kth 参数的负值。在本示例中,我们将围绕第 -2 个最小的数对数组进行分区。

arr = np.array([9, 3, 4, 1, 6])
print("The input array:")
print(arr)

output = np.partition(arr, -2)
print("The partitioned array:")
print(output)

总结

在本实验中,你学习了 Numpy 库中的 numpy.partition() 函数。我们介绍了如何创建输入数组、使用 numpy.partition() 函数对其进行分区、围绕多个 kth 值进行分区、指定轴、排序类型和顺序,以及处理负 kth 值。numpy.partition() 函数在处理大型数组时非常有用,尤其是在不需要对整个数组进行排序的情况下快速找到第 k 个最小或最大元素时。