numpy 排序
Posted 和尚爱吃肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]]
以上是关于numpy 排序的主要内容,如果未能解决你的问题,请参考以下文章
还有另一种按“列”值对 3D numpy 数组进行排序的方法吗?
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段