Numpy argsort() 是一个非常常用的函数,用于返回数组排序后的索引值。
numpy.argsort(a, axis=-1, kind=None, order=None)
参数说明
a:需要排序的数组。
axis:沿着哪个轴排序,默认为最后一个维度。
kind:排序算法类型,可以为‘quicksort’, ‘mergesort’, ‘heapsort’。默认为 quicksort。
order:排序的元素名称。
返回值:一个数组,其中每个元素为a的索引值,以使每个维度值都是升序的。
第一个例子是使用 argsort() 来对一维数组进行排序,以下是代码:
import numpy as np
arr = np.array([3, 1, 4, 2, 5])
idx = np.argsort(arr)
print(arr)
print(idx)
输出结果:
[3 1 4 2 5]
[1 3 0 2 4]
我们可以看到原始数组为 [3 1 4 2 5],而 argsort() 返回的是原始数组排序后的索引数组 [1 3 0 2 4],也就是索引为 1 的元素是排在第一位,索引为 3 的元素排在第二位,以此类推。
第二个例子是使用 argsort() 对二维数组进行排序,以下是代码:
import numpy as np
arr = np.array([[3, 1], [4, 2], [5, 0]])
idx = np.argsort(arr, axis=0)
print(arr)
print(idx)
输出结果:
[[3 1]
[4 2]
[5 0]]
[[0 0]
[1 1]
[2 2]]
我们可以看到原始数组为一个 3 行 2 列的二维数组,而 argsort() 返回的是原始数组在轴 0(竖直方向)上排序后的索引数组 [0 1 2],这里由于做了二维排序,所以返回的是每个元素在排序后行号的索引值矩阵。即矩阵最左上角元素在排序后是原矩阵第 0 行第 0 列元素,所以该位置的索引值是 [0, 0]。以此类推,矩阵第二行第二列元素排序后是矩阵第二行第二列元素,所以索引值为 [2, 2]。
以上就是 argsort() 的使用方法和实例展示,通过不同维度的数据排序,我们发现 argsort() 能够帮助我们快速对数据进行排序,可以提高我们对数据的操作效率。
本文链接:http://task.lmcjl.com/news/17027.html