【问题标题】:numpy sort arrays based on last column values [duplicate]基于最后一列值的numpy排序数组[重复]
【发布时间】:2018-11-25 12:41:40
【问题描述】:
import numpy as np

a = np.array([[5,9,44],
              [5,12,43],
              [5,33,11]])

b = np.sort(a,axis=0)

print(b) #not well

# [[ 5  9 11]
# [ 5 12 43]
# [ 5 33 44]]

#desired output:

#[[5,33,11],
# [5,12,43],
# [5,9,44]]

什么 numpy 排序完全改变了行(当然基于从低到高),但我想保持行不变。我想根据最后一列的值对行进行排序,但数组中的行和值必须保持不变。有什么pythonic方法可以做到这一点吗? 谢谢

【问题讨论】:

    标签: python numpy


    【解决方案1】:
    ind=np.argsort(a[:,-1])
    b=a[ind]
    

    编辑 当您在排序中使用axis 时,它会单独对每一列进行排序,您想要的是从所选列中获取已排序行的索引(-1 相当于最后一列),然后重新排序原始数组。

    【讨论】:

    • 那很快,谢谢。
    • 一些进一步的解释会很棒!
    【解决方案2】:
    a[a[:,-1].argsort()] 
    

    可能对你有用

    【讨论】:

    • 要访问最后一列,使用-1 比从列表的前面访问更可靠,因为前者可以缩放为不同的形状。
    猜你喜欢
    • 2020-06-20
    • 2018-07-26
    • 2013-01-27
    • 2018-05-01
    • 2019-04-25
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多