首页 > 解决方案 > 如何按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,但也欢迎使用其他解决方案。

标签: pythonarrayslistsortingnumpy

解决方案


取前两列的行最大值,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]])

推荐阅读