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

如何用Python/Numpy便捷合并四个矩阵?附MATLAB实现示例

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

嘿,这个需求我太熟了!在NumPy里实现你要的这种分块矩阵拼接,有好几种直观又简便的方法,其中甚至有和MATLAB语法几乎对齐的写法,我给你一一拆解:

首先先把你的四个矩阵用NumPy定义出来:

import numpy as np

a = np.array([[1, 1], [1, 1]])
b = np.array([[2, 2], [2, 2]])
c = np.array([[3, 3], [3, 3]])
d = np.array([[4, 4], [4, 4]])

方法1:用np.block()(最贴合MATLAB写法)

这个方法完全对应MATLAB里的[a b; c d]语法,直接按分块的结构传入嵌套列表就行,非常直观:

m = np.block([[a, b], [c, d]])

np.block()就是专门为分块矩阵拼接设计的函数,把你想要的矩阵排布用嵌套列表描述出来就行,新手友好度拉满。

方法2:hstack + vstack组合

如果想分步拼接,可以先横向拼接每行的矩阵,再纵向拼接结果:

# 横向拼接a和b,c和d
top_row = np.hstack([a, b])
bottom_row = np.hstack([c, d])
# 纵向拼接上下两行
m = np.vstack([top_row, bottom_row])
  • np.hstack():horizontal stack,沿着列方向拼接矩阵
  • np.vstack():vertical stack,沿着行方向拼接矩阵
    这种分步方式适合需要对中间结果做额外处理的场景。

方法3:灵活的np.concatenate()

用np.concatenate()可以通过指定axis参数来控制拼接方向,逻辑和上面的组合方法一致,但适配性更强:

# axis=1 表示沿列方向(横向)拼接
top_row = np.concatenate([a, b], axis=1)
bottom_row = np.concatenate([c, d], axis=1)
# axis=0 表示沿行方向(纵向)拼接
m = np.concatenate([top_row, bottom_row], axis=0)

这个方法在处理高维矩阵拼接时更通用,能应对更复杂的拼接需求。

验证结果

不管用哪种方法,最终得到的m都是你想要的结果:

print(m)
# 输出:
# [[1 1 2 2]
#  [1 1 2 2]
#  [3 3 4 4]
#  [3 3 4 4]]

内容的提问来源于stack exchange,提问作者Nick X Tsui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:33:16