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

如何按指定顺序将numpy对称矩阵转换为一维向量

对称矩阵按指定顺序转换为一维数组实现方法

我们需要将对称矩阵按逐行提取下三角(包含对角线)元素的规则,转换为目标顺序的一维数组,示例输入输出如下:

  • 输入示例矩阵
import numpy as np
m = np.matrix([[11, 21, 31],
               [21, 22, 32],
               [31, 32, 33]])
  • 期望输出
array([11, 21, 22, 31, 32, 33])

实现方法1:调用numpy内置索引函数(推荐)

np.tril_indices()会默认返回方阵下三角区域(含对角线)的行优先索引,直接用该索引提取元素即可完全匹配需求的输出顺序,实现代码如下:

import numpy as np

m = np.matrix([[11, 21, 31],
               [21, 22, 32],
               [31, 32, 33]])

# 获取n阶方阵的下三角行列索引
row_ids, col_ids = np.tril_indices(m.shape[0])
# 按索引提取元素并转换为一维数组
res = np.array(m[row_ids, col_ids]).flatten()
print(res)

运行后输出结果与预期完全一致。


实现方法2:自定义索引(适配其他自定义顺序需求)

如果后续需要调整为其他自定义提取规则,只需手动构造对应的行列索引对列表,再按索引提取即可,适配当前需求的实现如下:

# 按需求顺序构造行列索引对
custom_index = [(0,0), (1,0), (1,1), (2,0), (2,1), (2,2)]
res = np.array([m[i,j] for i,j in custom_index]).flatten()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:42:00