如何用NumPy将单通道2D数组转换为三通道2D数组(图像处理)
将NumPy单通道2D数组转为三通道数组
这里有几种简洁高效的方法实现你要的转换:
方法1:使用np.stack(最直观)
利用stack函数在最后一个维度上重复三次原数组:
import numpy as np a = np.array([[255,0],[0,255]]) b = np.stack([a, a, a], axis=-1)
该操作会在数组末尾添加新维度,将三个相同的单通道数组堆叠,得到目标三通道结构。
方法2:使用np.repeat
先给原数组增加一个维度,再在该维度上重复三次:
b = np.repeat(a[..., np.newaxis], 3, axis=-1)
a[..., np.newaxis]将2D数组转为形状为(2,2,1)的3D数组,后续用repeat在最后一维重复3次,即可得到(2,2,3)的目标数组。
方法3:利用广播机制
通过与长度为3的数组运算触发广播,自动扩展维度:
b = a[..., np.newaxis] * np.ones(3, dtype=a.dtype)
这种方式借助NumPy广播特性,无需显式重复数据,内存效率更高。
三种方法的输出结果一致,均为你示例中的目标数组:
print(b) # 输出: # [[[255 255 255] # [ 0 0 0]] # # [[ 0 0 0] # [255 255 255]]]
内容的提问来源于stack exchange,提问作者BABELAERE Robin
相关产品推荐
相关产品推荐

