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

如何将2x6的numpy二维数组转换为6x6分块对角矩阵?

将2x6 NumPy数组转换为6x6分块对角矩阵

首先定义原始数组:

import numpy as np
x = np.array([[0,1,2,3,4,5],[6,7,8,9,10,11]])

方法一:使用Scipy的block_diag(简洁高效)

通过scipy.linalg.block_diag可以直接将拆分后的子块组合成分块对角矩阵:

from scipy.linalg import block_diag

# 把2x6数组拆分为3个2x2的子块
block1 = x[:, :2]
block2 = x[:, 2:4]
block3 = x[:, 4:]

# 构造分块对角矩阵
result = block_diag(block1, block2, block3)

方法二:纯NumPy实现(无需额外库)

如果不想依赖Scipy,可以手动初始化全零矩阵并填充对角块:

# 创建6x6的全零矩阵
result = np.zeros((6, 6), dtype=x.dtype)

# 依次填充三个2x2的对角块
result[:2, :2] = x[:, :2]
result[2:4, 2:4] = x[:, 2:4]
result[4:, 4:] = x[:, 4:]

输出结果

执行以上代码后,result即为目标6x6分块对角矩阵:

[[ 0  1  0  0  0  0]
 [ 6  7  0  0  0  0]
 [ 0  0  2  3  0  0]
 [ 0  0  8  9  0  0]
 [ 0  0  0  0  4  5]
 [ 0  0  0  0 10 11]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:52:42