python - 如何按python中两个轴的最大值对列表进行排序?
问题描述
我想按列表中每个元素的第 0 和第 1 索引的最大值对列表进行排序。
例如,如果我有一个这样的列表:
[[2,1,2],
[0,3,9],
[1,2,9],
[1,1,2],
[3,2,7]]
排序后应该是这样的:
[[0,3,9],
[3,2,7],
[2,1,2],
[1,2,9],
[1,1,2]]
那么有什么有效的方法来做到这一点呢?
我更喜欢使用 numpy,但也欢迎使用其他解决方案。
解决方案
取前两列的行最大值,argsort,然后反转以得到降序。
您尚未指定任何决胜局,因此这与您所需的输出不匹配。换句话说,您的问题没有唯一的解决方案。
res = A[A[:, :2].max(1).argsort()[::-1]]
array([[3, 2, 7],
[0, 3, 9],
[1, 2, 9],
[2, 1, 2],
[1, 1, 2]])
推荐阅读
- onclick - sorttable.js - 页面加载时动态表上的排序列
- sql-server - 如何从 SQL 中的日期列中获取平均每秒时间?
- python - 使用 .groupby() 后重命名列的问题
- python - Selenium Edge Python 错误在测试执行后自动关闭 Edge 浏览器
- php - 学生各科目总分之和
- sql - 将不带引号的 SQL 对象名称转换为带引号的工具
- python-3.x - PyTorch:模块“火炬”没有属性“渐变”
- docusignapi - DocuSign 连接回调失败
- flutter - Expanded 内部的填充也会在其外部产生影响(Flutter)
- php - 如何通过方法 POST 发送数据进行控制 - laravel