numpy.argsort
函数是NumPy库中用于返回数组值排序后的索引数组的函数。这个函数非常有用,因为它允许你根据数组中的元素值来排序数组,同时保留原始数组的顺序,并且返回排序后的索引。
下面是numpy.argsort
函数的一些基本用法:
基本语法:
numpy.argsort(a, axis=-1, kind=None, order=None)
参数说明:
a
:需要排序的数组。axis
(可选):沿着哪个轴进行排序。默认是1
,表示沿着行排序。kind
(可选):排序算法的选择。默认是None
,表示使用快速排序。其他选项包括'mergesort'
和'quicksort'
等。order
(可选):用于指定根据哪个字段进行排序,适用于多维数组。
返回值:
- 返回一个数组,其中包含原数组中元素从小到大排序后的索引值。
示例代码:
import numpy as np
# 创建一个一维数组
a = np.array([3, 1, 2])
# 使用 argsort 获取排序后的索引
indices = np.argsort(a)
# 打印索引
print("排序后的索引为:", indices)
# 使用索引来访问排序后的元素
sorted_elements = a[indices]
print("排序后的元素为:", sorted_elements)
# 对多维数组使用 argsort
b = np.array([[8, 1], [3, 4]])
# 沿着第一个轴(行)进行排序
row_indices = np.argsort(b, axis=1)
# 沿着第二个轴(列)进行排序
col_indices = np.argsort(b, axis=0)
print("按行排序的索引:", row_indices)
print("按列排序的索引:", col_indices)
输出:
排序后的索引为: [1 2 0]
排序后的元素为: [1 2 3]
按行排序的索引: [[1 0]
[0 1]]
按列排序的索引: [[1 0]
[0 1]]
在这个示例中,argsort
首先被用于一维数组,然后用于二维数组的行和列排序。对于二维数组,可以通过指定axis
参数来选择是沿着行还是列进行排序。