如何将元素为2D数组的1D numpy数组转换为(d1,d2,d3)格式三维数组
问题背景说明
你当前遇到的现象本质是数组a属于存储numpy子数组的一维对象数组,而非标准的多维数值数组:长度为d1的一维结构里每个位置单独存了一个shape为(d2,d3)的子数组,所以直接查询a的维度只能得到(d1,)。
可行解决方法
你可以用以下几种常用方案完成维度转换,转换后np.shape(a)就会输出(d1, d2, d3):
- 方法1:使用
np.stack(最推荐的通用方案)
该方法会默认在第0维度将所有子数组堆叠,不需要额外配置参数即可满足需求:a = np.stack(a) - 方法2:使用
np.concatenate搭配维度扩展
如果你需要更灵活的拼接逻辑,可以先给每个子数组扩展出第0维,再沿第0维拼接:a = np.concatenate([sub_arr[np.newaxis, ...] for sub_arr in a], axis=0) - 方法3:强制转换为标准数组(仅适用于所有子数组shape完全一致的场景)
如果你能确认所有a[i]的shape都是统一的(d2, d3),也可以直接转列表后重新生成数组:a = np.array(a.tolist())
内容的提问来源于stack exchange,提问作者Pallavi
相关产品推荐
相关产品推荐

