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

MATLAB多维矩阵转NumPy矩阵:构造309×309分块矩阵

在Python中实现MATLAB风格的分块矩阵拼接

你直接用np.array([[Q,S,P],...])的写法会生成一个3×3×103×103的四维数组,这和你需要的二维分块矩阵完全不是一回事。要实现和MATLABU = [Q S P;S H G;P G E];一致的效果,得用numpy专门处理分块矩阵的np.block()函数。

正确实现代码

假设Q、S、P、H、G、E都是已经定义好的103×103 numpy数组,直接执行以下代码:

import numpy as np

# 前提:Q, S, P, H, G, E均为shape=(103, 103)的numpy数组
U = np.block([
    [Q, S, P],
    [S, H, G],
    [P, G, E]
])

验证结果

运行后用print(U.shape)检查,输出会是(309, 309),完全符合预期。

替代方案(不推荐)

如果不想用np.block(),也可以通过两次np.concatenate()组合实现:

  1. 先把每一行的三个小矩阵横向拼接:
    row1 = np.concatenate([Q, S, P], axis=1)
    row2 = np.concatenate([S, H, G], axis=1)
    row3 = np.concatenate([P, G, E], axis=1)
    
  2. 再把三行纵向拼接成最终矩阵:
    U = np.concatenate([row1, row2, row3], axis=0)
    

只是这种写法不如np.block()简洁直观,优先推荐前者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:24:44