numpy 排序


http://blog.csdn.net/william_2015/article/details/47834889

數據准備

import numpy as np from pandas import DataFrame a=np.array([[1,0,6],[1,7,0],[2,4,0],[2,3,1]]) print (a) [[1 0 6] [1 7 0] [2 4 0] [2 3 1]]

我們的目標是按第 3 列升序排序,在此基礎上,在按第 1 列降序排序,即得到如下效果:


[[2, 4, 0], [1, 7, 0], [2, 3, 1], [1, 0, 6]]

 

numpy 實現

numpy 中的 numpy.argsort()numpy.lexsort() 可以返回升序排序后的索引,不同的是numpy.lexsort() 可以接受多列,即可以進行子排序.


idex=np.lexsort([-1*a[:,0],a[:,2]]) a_sort=a[idex,:] print (a_sort) [[2 4 0] [1 7 0] [2 3 1] [1 0 6]]

要注意的是 numpy.lexsort() 先按后面的參數進行排序

pandas 實現

用 pandas 實現相同的功能會更簡單些:

df=DataFrame(a)
a_sort=df.sort([2,0],ascending=[1,0]) print (a_sort.values) [[2 4 0] [1 7 0] [2 3 1] [1 0 6]]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM