码迷,mamicode.com
首页 > 编程语言 > 详细

numpy 排序

时间:2017-03-05 00:26:13      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:rgs   rom   int   values   注意   http   frame   key   csdn   

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]]

numpy 排序

标签:rgs   rom   int   values   注意   http   frame   key   csdn   

原文地址:http://www.cnblogs.com/heshangaichirou/p/6503177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!