python numpy的argsort函数

argsort() 函数返回数组从小到大排序后对应的索引值,也就是返回的是索引值,而不是一贯的排序后的元素。

Help on function argsort in module numpy.core.fromnumeric:

argsort(a, axis=-1, kind='quicksort', order=None)
    Returns the indices that would sort an array.

看例子比较实在,

>>> a=[2,3,1,0]
>>> argsort(a)
array([3, 2, 0, 1])
>>> 

对于a数组,从小到大排序应该是[0, 1, 2, 3],由此每个数对应于a数组的索引值就是[3, 2, 0, 1]。

再看下二维数组,

>>> b=array([[2,3,0],[4,2,1]])
>>> b
array([[2, 3, 0],
       [4, 2, 1]])
>>> argsort(b)
array([[2, 0, 1],
       [2, 1, 0]])
>>> 

可见,此时是按行向量方向排序后返回元素对应的索引值。

当然也可以控制按照列方向排序,那就是使用axis参数,

>>> b
array([[2, 3, 0],
       [4, 2, 1]])
>>> argsort(b, axis=0)
array([[0, 1, 0],
       [1, 0, 1]])
>>> argsort(b, axis=1)
array([[2, 0, 1],
       [2, 1, 0]])
>>> 

和sum函数类似,
axis=0表示每一行作为一个元素,在列方向排序;axis=1表示每一列作为一个元素,在行方向排序。

猜你喜欢

转载自blog.csdn.net/u010039418/article/details/81175855