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

拼接分块后的3D NumPy数组问题求助

重新拼接分块3D NumPy数组恢复完整数据集

示例场景解决方案

你的分块是按照2×2网格划分的(横向2块、纵向2块),每个分块形状为(2,2,2)。要得到目标结果,可通过以下两种方法实现:

方法1:分步拼接

先横向拼接同组相邻分块(沿最后一维axis=2),再纵向拼接各组结果(沿中间一维axis=1):

import numpy as np

yellow_chunk = np.array([[[1,2], [5,6]], [[17,18], [21,22]]])
green_chunk = np.array([[[3,4], [7,8]], [[19,20], [23,24]]])
blue_chunk = np.array([[[9,10], [13,14]], [[25,26], [29,30]]])
red_chunk = np.array([[[11,12], [15,16]], [[27,28], [31,32]]])

# 横向拼接第一行的两个块
top_row = np.concatenate([yellow_chunk, green_chunk], axis=2)
# 横向拼接第二行的两个块
bottom_row = np.concatenate([blue_chunk, red_chunk], axis=2)
# 纵向拼接两行得到最终结果
output = np.concatenate([top_row, bottom_row], axis=1)

print(output)

输出与你期望的结果完全一致。

方法2:通用网格重组(适合大规模分块)

如果分块数量较多(比如你的实际场景16×16),可先将所有分块整理成分块网格数组,再通过轴变换和重塑完成拼接,无需手动分步操作:

# 将分块按2×2网格排列(行优先顺序)
chunk_grid = np.array([[yellow_chunk, green_chunk], [blue_chunk, red_chunk]])
# chunk_grid形状为(2,2,2,2,2) → (块行数, 块列数, 数据轴0, 数据轴1, 数据轴2)

# 调整轴顺序:保留数据轴0,将块行维度与数据轴1合并、块列维度与数据轴2合并
rearranged = chunk_grid.transpose(2, 0, 3, 1, 4)
# 重塑数组,合并对应维度得到最终形状
output = rearranged.reshape(2, 2*2, 2*2)

实际场景适配(16×16分块,每个分块16×128×16)

假设你已将16×16个分块整理为形状(16,16,16,128,16)的网格数组chunk_grid,执行以下步骤即可得到完整数据集:

  1. 调整轴顺序:保留数据第一维,将块行维度与数据第二维合并、块列维度与数据第三维合并
  2. 重塑数组,合并对应维度得到最终规模

代码示例:

# 假设chunk_grid是整理好的16×16分块网格,形状(16,16,16,128,16)
rearranged = chunk_grid.transpose(2, 0, 3, 1, 4)
full_dataset = rearranged.reshape(16, 16*128, 16*16)

如果分块以列表形式存储(比如长度256的列表chunks),可先将列表重塑为网格数组:

chunk_grid = np.array(chunks).reshape(16,16,16,128,16)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:45:50