在 NumPy 中按列对数组进行排序

Muhammad Maisam Abbas 2023年1月30日
  1. NumPy 使用 numpy.sort() 函数按列对数组进行排序
  2. NumPy 使用 numpy.argsort() 函数按列对数组进行排序
在 NumPy 中按列对数组进行排序

本教程将介绍在 NumPy 中按列对数组进行排序的方法。

NumPy 使用 numpy.sort() 函数按列对数组进行排序

假设我们有一个 2D NumPy 数组,我们想根据特定列中元素的顺序对行进行排序。我们可以使用 numpy.sort() 函数来做到这一点。numpy.sort() 函数 对 NumPy 数组进行排序。我们可以在 numpy.sort() 函数的 orderaxis 参数中指定列索引和轴。我们需要将我们的数组转换为带有字段的结构化数组以使用 numpy.sort() 函数。我们可以使用 numpy.view() 函数来做到这一点。请参考以下代码示例。

import numpy as np

array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)

array.view("i8,i8,i8").sort(order=["f1"], axis=0)
print("Array after sorting\n", array)

输出:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

我们首先使用 np.array() 函数创建了 2D NumPy 数组 array。然后我们使用 array.view() 函数将 array 转换为结构化数组。之后,我们使用 sort(order=['f1'], axis=0) 函数按第二列对数组进行排序。此处,f1 指的是第二列。

NumPy 使用 numpy.argsort() 函数按列对数组进行排序

另一种与前一种方法完全相同的更简单的方法是使用 numpy.argsort() 函数。numpy.argsort() 函数 也用于对数组的元素进行排序。它与之前的方法非常相似,但我们不需要使用 numpy.view() 函数来使这种方法工作。numpy.argsort() 函数返回用于对数组进行排序的索引。请参考以下代码示例。

import numpy as np

array = np.array([[1, 1, 2], [0, 0, 1], [1, 1, 3]])
print("Array before sorting\n", array)

array[array[:, 1].argsort()]
print("Array after sorting\n", array)

输出:

Array before sorting
 [[1 1 2]
 [0 0 1]
 [1 1 3]]
Array after sorting
 [[0 0 1]
 [1 1 2]
 [1 1 3]]

我们首先使用 np.array() 函数创建了一个 2D NumPy 数组 array。然后我们使用一个数组切片来指定 array 的第二列,并使用 np.argsort() 函数对其进行排序。我们使用 np.argsort() 函数返回的索引对 array 进行排序。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn