如何通用实现任意偶数维NumPy数组列表的特定交错拼接功能
通用实现方案
我们可以先从你已有的切片逻辑和验证场景里提炼出统一规律:
- 设
original_size长度为k,最终大数组维度为2k,最高支持k=6即可覆盖12维需求 - 所有子数组的第
k个轴(索引从0开始计数)长度均为1,切片赋值时正是把这些子数组依次写到大数组的第k个轴的对应位置 - 你之前验证的2维场景(k=1)沿轴1拼接、4维场景(k=2)沿轴2拼接,本质都是沿第
k个轴拼接长度为1的子数组
基于这个规律,直接用np.concatenate沿第k个轴拼接parts_list即可实现全维度兼容的逻辑,完全等价于切片赋值的效果:
import numpy as np def concat_parts(parts_list, original_size): k = len(original_size) # 沿第k个轴拼接所有子数组 return np.concatenate(parts_list, axis=k)
多场景验证
- 2维场景(k=1,大数组shape(x,x)):拼接轴为1,等价于
np.hstack(parts_list),和你用np.block得到的结果完全一致 - 4维场景(k=2,大数组shape(x,y,x,y)):拼接轴为2,等价于
np.dstack(parts_list),和你已验证的结果一致 - 6维场景(k=3,大数组shape(x,y,z,x,y,z)):拼接轴为3,直接拼接即可得到目标数组
- 更高维场景:只要调整
original_size的长度k,最高k=6即可支持12维数组的拼接,不需要修改逻辑
这个方案就是你参考的dstack逻辑的高维扩展:dstack是固定沿轴2拼接,本方案把拼接轴参数化为和original_size长度匹配的k,自然支持任意偶数维度的需求。
内容的提问来源于stack exchange,提问作者6659081
相关产品推荐
相关产品推荐

