You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何获取按列排序的方阵下三角索引(Matplotlib成对图用)

用Numpy快速获取按列排序的严格下三角矩阵索引

刚好我之前也处理过类似的成对图subplot需求,这个场景用Numpy的内置函数就能一步搞定,代码超简洁!

你需要的是**严格下三角区域(行索引i > 列索引j)**且按列排序的索引,Numpy的np.tril_indices()函数正好能满足这个需求:

  • 参数n是你的方阵边长(比如4x4矩阵就传4)
  • 参数k=-1表示只取严格下三角(排除对角线元素,这正好匹配你例子里的结果)
  • 这个函数返回的索引对默认就是按列优先排序的,完全符合你要的顺序

示例代码

import numpy as np

# 定义方阵大小
n = 4
# 获取严格下三角的行、列索引(按列排序)
rows, cols = np.tril_indices(n, k=-1)

# 打包成索引对查看
index_pairs = list(zip(rows, cols))
print("索引对:", index_pairs)
# 输出:索引对: [(1, 0), (2, 0), (3, 0), (2, 1), (3, 1), (3, 2)]

# 验证你的示例矩阵
matrix = np.array([
    [1, 2, 3, 4],
    [5, 6, 8, 7],
    [8, 9, 10, 11],
    [12, 13, 14, 15]
])
# 提取对应元素
target_elements = matrix[rows, cols]
print("对应元素:", target_elements)
# 输出:对应元素: [ 5  8 12  9 13 14]

补充说明

如果之后需要包含对角线的下三角区域,只需要把k=-1改成k=0即可,但根据你的例子,k=-1是正确的选择。

内容的提问来源于stack exchange,提问作者Fernando Wittmann

火山引擎 最新活动