在 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