np.argsort()是NumPy库中的一个函数,用于返回数组中元素排序后的索引值数组。它根据数组的值从小到大进行排序,并返回相应的索引数组。
1. 基本语法
下面是np.argsort()的语法:
numpy.argsort(a, axis=-1, kind=None, order=None)
参数说明:
a:待排序的数组。
axis:指定排序的轴,默认为最后一个轴。
kind:指定排序算法,可选值有"quicksort"、"mergesort"和"heapsort",默认为"quicksort"。
order:当a为结构化数组时,指定排序的字段。
返回值是一个数组,其中包含了按升序排序的索引值。
2. 更多细节
默认行为:如果没有指定axis参数,默认情况下会对数组的最后一个轴进行排序。例如,对于二维数组,将按行进行排序。
多维数组排序:可以通过指定axis参数来对多维数组的特定轴进行排序。对于axis=0,将沿着列进行排序;对于axis=1,将沿着行进行排序。
返回值:np.argsort()函数返回一个与原始数组形状相同的数组,其中包含了按升序排序后的索引值。
排序算法:np.argsort()函数使用快速排序(quicksort)算法来进行排序。可以通过kind参数指定其他排序算法,包括归并排序(mergesort)和堆排序(heapsort)。
结构化数组的排序:如果数组是结构化数组,可以使用order参数指定要排序的字段。
3. 代码示例
以下是一个示例,展示如何使用np.argsort()函数进行排序:
import numpy as np
arr = np.array([9, 3, 7, 1, 5])
sorted_indices = np.argsort(arr)
print(sorted_indices) #输出结果为:[3 1 4 2 0]
通过np.argsort()函数,数组arr被排序为[1, 3, 5, 7, 9],并返回了相应的索引值数组[3, 1, 4, 2, 0],表示原数组中元素的排序顺序。在这个例子中,最小的元素1的索引是3,次小的元素3的索引是1,以此类推。