如何将元素为(2,)数组、形状为(3,2)的numpy数组转为(3,2,2)形状
解决方法
你可以通过以下两种常用方案实现转换,两种方案均可以输出形状为(3,2,2)的标准numpy数组:
方案1:最简方案(推荐)
先将object数组转为嵌套列表,再重新构造numpy数组即可,numpy会自动对齐匹配的子数组维度:
# 转换代码 res = np.array(a.tolist()) # 验证 print(res.shape) # 输出 (3, 2, 2)
方案2:兼容通用方案
如果遇到numpy版本差异导致方案1失效的情况,可以用np.stack手动堆叠后调整形状,适用于所有子数组形状统一的场景:
# 转换代码 res = np.stack(a.flatten(), axis=0).reshape(a.shape + (-1,)) # 验证 print(res.shape) # 输出 (3, 2, 2)
注意:以上方案仅适用于所有object类型单元格内的子数组形状完全一致的场景,与你的问题场景完全匹配。
输出结果验证
两种方案最终得到的数组内容如下:
array([[[4, 4], [4, 5]], [[5, 5], [5, 6]], [[6, 6], [6, 7]]])
内容的提问来源于stack exchange,提问作者Nick2222
相关产品推荐
相关产品推荐

