qq_41660047 2019-12-25 20:49 采纳率: 0%
浏览 1275
已结题

Python中的numpy lexsort用法问题

我看网上写的
import numpy as np

a
array([[ 2, 7, 4, 2],
[35, 9, 1, 5],
[22, 12, 3, 2]])

按最后一列顺序排序

a[np.lexsort(a.T)]
array([[22, 12, 3, 2],
[ 2, 7, 4, 2],
[35, 9, 1, 5]])

按最后一列逆序排序

a[np.lexsort(-a.T)]
array([[35, 9, 1, 5],
[ 2, 7, 4, 2],
[22, 12, 3, 2]])

按第一列顺序排序

a[np.lexsort(a[:,::-1].T)]
array([[ 2, 7, 4, 2],
[22, 12, 3, 2],
[35, 9, 1, 5]])

我想问下a[:,::-1].T这个代表啥意思?
比如我现在有一个10X8的数组,我现在要用第六列升序排序,该如何写代码?
  • 写回答

1条回答

  • threenewbee 2019-12-25 23:50
    关注
    a[:,::-1]是对列从后往前,行不变。T是数组转置
    两者联合起来用,比如
    2, 7, 4, 2
    35, 9, 1, 5
    22, 12, 3, 2
    ->
    2,4,7,2
    5,1,9,35
    2,3,12,22
    再转置
    2,5,2
    4,1,3
    7,9,12
    2,35,22
    (0,1,2)这是原始的下标
    lexsort默认按最后一行元素有小到大排序
    所以
    上面2,35,22排序成
    2,22,35
    也就是
    (0,2,1)
    最后a[这个下标]
    2, 7, 4, 2 --- a[0]
    22, 12, 3, 2 --- a[2]
    35, 9, 1, 5 ---a[1]
    所以就完成排序
    
    按照第六列升序排序代码如下:
    import numpy as np
    a=np.array([[ 2, 7, 4, 2, 8, 9, 15],
                [35, 9, 1, 5, 1, 8, 3],
                [22, 12, 3, 2, 1, 2, 14],
                [3, 0, 5, 3, 11, 7, 6],
                [7, 12, 9, 4, 5, 11, 13]])
    print(a[:,:6:].T)
    print(np.lexsort(a[:,:6:].T))
    print(a[np.lexsort(a[:,:6:].T)])
    结果:(注意看中间的输出,让你更好理解)
    [[ 2 35 22  3  7]
     [ 7  9 12  0 12]
     [ 4  1  3  5  9]
     [ 2  5  2  3  4]
     [ 8  1  1 11  5]
     [ 9  8  2  7 11]]
    [2 3 1 0 4]
    [[22 12  3  2  1  2 14]
     [ 3  0  5  3 11  7  6]
     [35  9  1  5  1  8  3]
     [ 2  7  4  2  8  9 15]
     [ 7 12  9  4  5 11 13]]
    

    进一步学习,可以阅读文档:https://het.as.utexas.edu/HET/Software/Numpy/reference/generated/numpy.lexsort.html

    问题解决的话,请点下采纳

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站