如何沿指定维度将numpy ndarray拼接到另一数组得到目标形状
错误原因
np.concatenate 要求参与拼接的数组除拼接轴外其余维度尺寸完全匹配,且总维度数一致。你用到的数组A是3维(形状(5,3,2)),数组B是2维(形状(5,3)),维度总数不匹配,因此直接沿axis=2拼接会执行失败。另外你的示例代码里定义变量用的是大写A/B,拼接时用了小写a/b,也要注意变量名大小写一致避免报错。
解决方法
方法1:手动扩展B的维度后拼接
用np.newaxis给B新增最后一个维度,使B的形状变为(5,3,1),和A的前两维尺寸匹配后再执行拼接:
import numpy as np A = np.random.rand(5,3,2) B = np.random.rand(5,3) # 给B添加最后一维,等价写法:B = B.reshape(5,3,1) B = B[..., np.newaxis] C = np.concatenate((A, B), axis=2) print(C.shape) # 输出 (5, 3, 3)
方法2:使用np.dstack一键拼接
np.dstack是numpy专门用于沿第三维(深度维度)拼接的接口,会自动给2维数组补充最后一个维度,代码更简洁:
import numpy as np A = np.random.rand(5,3,2) B = np.random.rand(5,3) C = np.dstack((A, B)) print(C.shape) # 输出 (5, 3, 3)
内容的提问来源于stack exchange,提问作者user297850
相关产品推荐
相关产品推荐

