前几天在别人的代码中看到了argsort这个函数,当时不太明白这个函数到底是做什么的。然后就在网络搜了一下,打开几篇博客,都是转载的,要不就是翻译官方文档,看了几篇愣是没看明白。费了好大劲,搞清楚这个函数的意思了。所以特地写篇博客,希望能够讲清楚这个函数的用处。
首先我们构造一个numpy数组
import numpy as np
a = np.array([10, 2, 7])
我们对数组a按照升序进行排列
b = sorted(a)
排序后得到的数组b是[2, 7, 10]
我们在根据数组b构造一个数组
2在数组a中的索引是1,7在数组a中的索引是2,10在数组a中的索引是0,我们用这些索引按照这个顺序再构造一个数组c,那么c是 [1, 2, 0]。
这个索引数组其实就是argsort的返回值
a = np.array([10,2,7])
a.argsort()
array([1, 2, 0])
综上,也就是说,a.argsort()返回的数组是a经过排序(升序)后的其元素在原数组的索引。