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

如何将Numpy对象数组类型的9x9分块矩阵转换为36x36完整矩阵

方案1:使用np.block直接拼接

np.block是Numpy专门用于拼接分块矩阵的内置函数,你只需要把object类型的分块矩阵转成嵌套列表传入即可,写法非常直观:

import numpy as np
full_matrix = np.block(A.tolist())

方案2:使用维度变换实现(效率更高)

如果你的分块矩阵尺寸很大,用维度重排的方式性能会更好,几乎没有额外的内存开销:

full_matrix = A.reshape(N, N, sizeOfBlock, sizeOfBlock)\
               .transpose(0, 2, 1, 3)\
               .reshape(N * sizeOfBlock, N * sizeOfBlock)

原理说明:

  1. 第一步reshape把原来(9,9)的object数组展开为(9,9,4,4)的四维数组,后两个维度对应每个分块的尺寸
  2. transpose(0,2,1,3)调整轴顺序,把行方向的维度、列方向的维度分别放到一起
  3. 最后一步reshape直接合并维度得到(36,36)的完整矩阵

你可以用下面的代码验证结果正确性:

# 测试用例:修改个别分块验证拼接结果
A[0,0] = np.ones((sizeOfBlock, sizeOfBlock))
A[1,2] = np.full((sizeOfBlock, sizeOfBlock), 2)

# 验证两种方法输出结果完全一致
print(np.allclose(np.block(A.tolist()), A.reshape(N,N,4,4).transpose(0,2,1,3).reshape(36,36)))
# 输出:True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:15:05