在NumPy中萌朱,sort() 可以對數(shù)組進(jìn)行排序
argsort() 可以返回排序后的數(shù)組在原數(shù)組中的下標(biāo)
舉個例子:
原數(shù)組如下:
import numpy as np
a1 = np.array([10,6,8,2,5,4,9,1])
a1
## array([10, 6, 8, 2, 5, 4, 9, 1])
sort() 排序:
b1= np.sort(a1)
b1
## array([ 1, 2, 4, 5, 6, 8, 9, 10])
argsort() 得到原來的索引位置
i1 = np.argsort(a1)
i1
## array([7, 3, 5, 4, 1, 2, 6, 0], dtype=int64)
那么如何通過這個索引位置恢復(fù)到原來的數(shù)組呢勺鸦?
則將上面的i1再進(jìn)行一次argsort()運(yùn)算覆积,得到索引认境,按照索引去排序過后的b1中找
b1[np.argsort(i1)]
## array([10, 6, 8, 2, 5, 4, 9, 1])
題圖是在《Python One-Liners》這本書里的区拳,有興趣的朋友晨仑,可以看一下哦
參考資料:
- 書籍《Python One-Liners》
2. https://stackoverflow.com/questions/2483696/undo-or-reverse-argsort-python