在 NumPy 中按列对数组进行排序
本教程将介绍在 NumPy 中按列对数组进行排序的方法。
NumPy 使用 numpy.sort()
函数按列对数组进行排序
假设我们有一个 2D NumPy 数组,我们想根据特定列中元素的顺序对行进行排序。我们可以使用 numpy.sort()
函数来做到这一点。numpy.sort()
函数 对 NumPy 数组进行排序。我们可以在 numpy.sort()
函数的 order
和 axis
参数中指定列索引和轴。我们需要将我们的数组转换为带有字段的结构化数组以使用 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
进行排序。
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