在深度學習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.argmin()]
數組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)