You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python按第二列降序排列指定矩阵?

按第二列对矩阵降序排列的Python实现

没问题,这其实是Python里处理列表/矩阵排序很常见的需求,我给你几种实用的实现方式,你可以根据自己的场景挑选:

方法1:使用Python内置的sorted()函数(返回新列表)

这是最通用的方式,不需要额外依赖,适合处理普通的嵌套列表。核心是利用key参数指定排序依据为每个子列表的第二列(Python索引从0开始,所以第二列对应索引1),再通过reverse=True把默认的升序改成降序。

代码示例:

# 你的原始矩阵
matrix = [[1, 0.7142857142857144], [3, 3.7142857142857144]]

# 按第二列降序排列,返回新列表
sorted_matrix = sorted(matrix, key=lambda x: x[1], reverse=True)

print(sorted_matrix)
# 输出: [[3, 3.7142857142857144], [1, 0.7142857142857144]]

这里的lambda x: x[1]是一个简单的匿名函数,它告诉sorted():每个子列表的排序依据是它的第二个元素。

方法2:使用列表的.sort()方法(原地修改原列表)

如果你不需要保留原始矩阵,想直接在原列表上修改排序结果,可以用列表自带的.sort()方法,参数和sorted()完全一致:

matrix = [[1, 0.7142857142857144], [3, 3.7142857142857144]]

# 直接在原列表上按第二列降序排序
matrix.sort(key=lambda x: x[1], reverse=True)

print(matrix)
# 输出: [[3, 3.7142857142857144], [1, 0.7142857142857144]]

⚠️ 注意:.sort()方法没有返回值(或者说返回None),所以别写成matrix = matrix.sort(...),那样会让matrix变成None。

方法3:使用NumPy库(适合大型数值矩阵)

如果你的矩阵是数值型的,而且后续还要做更多数值计算,用NumPy会更高效,处理大型矩阵时优势明显:

import numpy as np

# 将普通列表转换为NumPy数组
np_matrix = np.array([[1, 0.7142857142857144], [3, 3.7142857142857144]])

# 按第二列降序排列:先获取降序索引,再重新排列数组
sorted_np_matrix = np_matrix[np.argsort(-np_matrix[:, 1])]

print(sorted_np_matrix)
# 输出:
# [[3.         3.71428571]
#  [1.         0.71428571]]

解释一下:np_matrix[:, 1]提取出第二列的所有元素,给它加负号后用argsort(),得到的就是原列降序对应的行索引;最后用这个索引去取原数组的行,就完成了降序排列。

内容的提问来源于stack exchange,提问作者Dimmy Magalhães

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:33:09