如何为r、g、b二维numpy数组新增第三维度以适配np.concatenate拼接需求
单通道数组新增第三维的实现方法
- 方法1:使用
np.newaxis索引新增维度
直接在数组索引末尾加np.newaxis(等价于Python内置的None)即可在最后一维新增长度为1的维度,转换后数组shape为(379, 754, 1):
示例代码:r[..., np.newaxis]、g[..., None](两者效果完全一致) - 方法2:使用
np.expand_dims显式指定新增维度位置
调用Numpy内置的维度扩展方法,指定axis=-1代表在最后一维新增:
示例代码:np.expand_dims(r, axis=-1) - 方法3:使用
reshape方法重设数组形状
直接指定新的维度结构,保留原有前两维大小,新增第三维长度为1:
示例代码:r.reshape(379, 754, 1)或者通用写法r.reshape(*r.shape, 1)
代码修正说明
除了给单通道数组新增维度外,你原有np.concatenate的拼接轴参数axis=0设置错误,要得到和fs匹配的(379, 754, 3)形状,需要在第三维拼接,即设置axis=2,修正后完整代码示例:
# 使用np.newaxis方案 fs = fs + np.concatenate((r[..., np.newaxis], g[..., np.newaxis], b[..., np.newaxis]), axis=2)
更简便的替代方案:直接用np.stack方法拼接三个数组,该方法会自动为每个数组新增维度后拼接,无需手动扩展维度:
# stack方案直接输出shape为(379, 754, 3)的数组 fs = fs + np.stack((r, g, b), axis=-1)
内容的提问来源于stack exchange,提问作者Zyder
相关产品推荐
相关产品推荐

