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

如何将Numpy数组列表按指定网格拼接为同秩矩阵

Numpy数组网格拼接实现方案

方法1:逐行拼接逻辑(直观易理解)

先按网格行数拆分列表为行组,拼接每行内的数组后再把所有行拼接在一起:

import numpy as np

# 示例参数定义
H, W, C = 2, 3, 3  # 单个数组的高、宽、通道数
grid_rows, grid_cols = 3, 4  # 目标网格尺寸:3行4列

# 构造测试用的12个数组,每个填充不同数值方便验证结果
my_list = [np.full((H,W,C), fill_value=i, dtype=np.uint8) for i in range(12)]

# 核心拼接逻辑
# 1. 按网格列数拆分出每一行对应的数组组
row_groups = [my_list[i*grid_cols : (i+1)*grid_cols] for i in range(grid_rows)]
# 2. 沿宽度方向(axis=1)拼接每一行内的所有数组
row_arrays = [np.concatenate(group, axis=1) for group in row_groups]
# 3. 沿高度方向(axis=0)拼接所有行得到最终结果
result = np.concatenate(row_arrays, axis=0)

# 验证输出形状,应为(H*3, W*4, C) = (6, 12, 3)
print(result.shape)

方法2:维度变换实现(更高效)

通过reshape和轴重排直接完成拼接,避免循环操作,性能更优:

import numpy as np

H, W, C = 2, 3, 3
grid_rows, grid_cols = 3, 4
my_list = [np.full((H,W,C), fill_value=i, dtype=np.uint8) for i in range(12)]

# 核心逻辑
arr = np.array(my_list)
result = arr.reshape(grid_rows, grid_cols, H, W, C)\
            .transpose(0, 2, 1, 3, 4)\
            .reshape(grid_rows*H, grid_cols*W, C)

print(result.shape)

提示:如果你的数组是通道优先格式(形状为(C, H, W)),只需要对应调整拼接的axis参数或者transpose的维度顺序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:36:01