python基于numpy的多维数组排序

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]])
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值