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

Muhammad Maisam Abbas 2023年1月30日 2021年7月4日
  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