1.sort
numpy.sort(a, axis=1, kind='quicksort', order=None)
- a :所需排序的數組
- axis:數組排序時的基准,axis=0按行排列;axis=1按列排列
- kind:數組排序時使用的方法,其中:
- kind=′quicksort′為快排;kind=′mergesort′為混排;kind=′heapsort′為堆排;
- order:一個字符串或列表,可以設置按照某個屬性進行排序
2.argsort
numpy.argsort(a, axis=1, kind='quicksort', order=None)
- a :所需排序的數組
- axis:數組排序時的基准,axis=0按行排列;axis=1按列排列
- kind:數組排序時使用的方法,其中:
- kind=′quicksort′為快排;kind=′mergesort′為混排;kind=′heapsort′為堆排;
- order:一個字符串或列表,可以設置按照某個屬性進行排序
3.lexsort 排字典序函數
numpy.argsort(a, axis=-1, kind='quicksort', order=None)
b在前,a在后,即是先按照a的元素進行比較
如a中的最小值為兩個1,其索引分別為0,2,再計較b中相應索引上的值,即9,0
對應的最小應是:1,0,而其對應的索引為2,所以排序后返回的結果第一個值為索引2
下一個最小應是:1,9,而其對應的索引為0,所以排序后返回的結果第一個值為索引0
以此類推...
下例lexsort以最后一行開始,首先對a進行排序,可以發現a中有幾個元素是相同的,有着相同元素的按照索引小的在前,
因此a排序后的索引數組為[ 0, 2, 4, 3, 5, 6, 1 ]。然后我們對b進行排序,排序結果為[ 2, 4, 6, 5, 3, 1, 0 ],
最后的排序結果為[ 2, 0, 4, 6, 5, 3, 1 ],我們知道a中索引0和2數值相等,但是在b中索引為2的元素比索引為0的元素小,
所以最終的比較結果為第二列比第0列小,其他列同理。其實上面相當於是對 19,54,10,44,30,42,41進行排序,
帶下划線的元素是主關鍵字,主關鍵字來自a(最后一行),當主關鍵字比較不出結果,則參考次關鍵字(b對應行)的比較結果得出最后的排序結果
另外對有序數組中,我們可以用searchsorted找到某個元素合適的位置。這里不一定會找到查找成功,
但是如果待查找元素存在則一定在那個的位置上。因此searchsorted方法可以輕松找到某一個區間的臨界點的索引。
(注意如果元素存在且不止一個,則默認返回最左邊的索引)
4.numpy.searchsorted
- numpy.searchsorted(a, v, side='left', sorter=None)
- a:所需排序的數組
- v:待查詢索引的元素值
- side:查詢索引時的方向,其中:kind=′left′為從左至右;kind=′right′為從右至左
- sorder:一個字符串或列表,可以設置按照某個屬性進行排序
5.numpy.partition(與此對應的還有argpartition)
6.sorted()