基于最后一列值的numpy排序数组[重复]
Posted
技术标签:
【中文标题】基于最后一列值的numpy排序数组[重复]【英文标题】:numpy sort arrays based on last column values [duplicate] 【发布时间】: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方法可以做到这一点吗? 谢谢
【问题讨论】:
【参考方案1】:ind=np.argsort(a[:,-1])
b=a[ind]
编辑
当您在排序中使用axis
时,它会单独对每一列进行排序,您想要的是从所选列中获取已排序行的索引(-1 相当于最后一列),然后重新排序原始数组。
【讨论】:
那很快,谢谢。 一些进一步的解释会很棒!【参考方案2】:a[a[:,-1].argsort()]
可能对你有用
【讨论】:
要访问最后一列,使用-1
比从列表的前面访问更可靠,因为前者可以缩放为不同的形状。以上是关于基于最后一列值的numpy排序数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章