np.argsort()

在深度学习Mnist案例中遇到了argsort()函数,查了相关资料,把它的用法整理如下。

numpy.argsort(a, axis=-1, kind=’quicksort’, order=None) 

功能: 将矩阵a按照axis排序,并返回排序后的下标
参数: a:输入矩阵, axis:需要排序的维度
返回值: 输出排序后的下标

(一维数组)

import numpy as np

x = np.array([1,4,3,-1,6,9])

x.argsort()

# array([3, 0, 1, 2, 4, 5], dtype=int64)

可以发现,argsort()是将X中的元素从小到大排序后,提取对应的索引index,然后输出到y
如x[3]=-1最小,x[5]=9最大

所以取数组x的最小值可以写成:

x[x.argsort()[0]]

或者用argmin()函数

x[x.argmax()]

 
数组x的最大值,写成:

x[x.argsort()[-1]]  # -1代表从后往前反向的索引

或者用argmax()函数,不再详述

x[x.argmax()]

 输出排序后的数组

x[x.argsort()]
# 或
x[np.argsort(x)]

(二维数组)

x = np.array([[1,5,4],[-1,6,9]])
# [[ 1  5  4]
# [-1  6  9]]

沿着行向下(每列)的元素进行排序 

np.argsort(x,axis=0)
# array([[1, 0, 0],
#        [0, 1, 1]], dtype=int64)

沿着列向右(每行)的元素进行排序

np.argsort(x,axis=1)
# array([[0, 2, 1],
#        [0, 1, 2]], dtype=int64)

承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的均可,咸鱼交易,专业回答请走知乎,详谈请联系QQ号757160542,非诚勿扰。

猜你喜欢

转载自blog.csdn.net/weixin_36670529/article/details/113817823
np