您的位置:首页 > 编程语言 > Python开发

python基于numpy的多维数组排序

2018-03-09 21:39 567 查看

python基于numpy的多维数组排序

1.根据数组中某一行的大小排序

a.T[np.lexsort(a[0,None])].T    #按第0行的大小排序
a.T[np.lexsort(a[-1,None])].T   #按最后一行的大小排序


>>> a=np.array([[2,7,4,2],[35,9,1,5],[22,12,3,2]])
>>> a
array([[ 2, 7, 4, 2],
[35, 9, 1, 5],
[22, 12, 3, 2]])
>>> a.T[np.lexsort(a[0,None])].T   #按第0行的大小排序
array([[ 2, 2, 4, 7],
[35, 5, 1, 9],
[22, 2, 3, 12]])
>>> a.T[np.lexsort(a[1,None])].T   #按第1行的大小排序
array([[ 4, 2, 7, 2],
[ 1, 5, 9, 35],
[ 3, 2, 12, 22]])
>>> a.T[np.lexsort(a[2,None])].T   #按第2行的大小排序
array([[ 2, 4, 7, 2],
[ 5, 1, 9, 35],
[ 2, 3, 12, 22]])


逆序排序

>>> a.T[np.lexsort(-a[0,None])].T   #按第0行的大小逆序排序
array([[ 7, 4, 2, 2],
[ 9, 1, 35, 5],
[12, 3, 22, 2]])


2.根据数组中某一列的大小排序

a[np.lexsort(a.T[0,None])]   #按第0列的大小排序
a[np.lexsort(a.T[-1,None])]  #按最后一列的大小排序


>>> a
array([[ 2, 7, 4, 2],
[35, 9, 1, 5],
[22, 12, 3, 2]])
>>> a[np.lexsort(a.T[0,None])]   #按第0列的大小排序
array([[ 2, 7, 4, 2],
[22, 12, 3, 2],
[35, 9, 1, 5]])
>>> a[np.lexsort(a.T[1,None])]   #按第1列的大小排序
array([[ 2, 7, 4, 2],
[35, 9, 1, 5],
[22, 12, 3, 2]])
>>> a[np.lexsort(a.T[2,None])]   #按第2列的大小排序
array([[35, 9, 1, 5],
[22, 12, 3, 2],
[ 2, 7, 4, 2]])


逆序排序

>>> a[np.lexsort(-a.T[0,None])]   #按第0列的大小逆序排序
array([[35, 9, 1, 5],
[22, 12, 3, 2],
[ 2, 7, 4, 2]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: