Python 如何向三维阵列的每个二维阵列添加(而不是附加)二维阵列?

Python 如何向三维阵列的每个二维阵列添加(而不是附加)二维阵列?,python,numpy,Python,Numpy,我想对向3d数组中的每个2d数组添加2d数组的过程进行矢量化 我使用matplotlib中的图像导入了一个图像文件 data = image.imread('test.jpg') 然后我尝试将每个RGB数组的平均值添加到另一个与data data2 = np.zeros_like(data) data3 = np.average(data, axis=2) for i in range(len(data2[0,0,:])): data2[:,:,i] = data3 我只想将上面的两

我想对向3d数组中的每个2d数组添加2d数组的过程进行矢量化

我使用matplotlib中的图像导入了一个图像文件

data = image.imread('test.jpg')
然后我尝试将每个RGB数组的平均值添加到另一个与
data

data2 = np.zeros_like(data)
data3 = np.average(data, axis=2)
for i in range(len(data2[0,0,:])):
    data2[:,:,i] = data3

我只想将上面的两行代码矢量化为一行

data3
转换为结果数据类型,然后用-

输出将只是
b
的一个视图,因此我们在那里获得了内存效率

如果您需要具有自己内存空间的输出,我们可以使用
data2\u out.copy()
或使用
np.repeat
,如下所示-

np.repeat(b[...,None],data.shape[2],axis=2)
data2[:] = data3[...,None]
如果您已经初始化了输出数组
data2
并且只想分配给它,那么我们可以通过将
data3
扩展到
3D
来实现这一点,在某些情况下,这可能会更直观,例如-

np.repeat(b[...,None],data.shape[2],axis=2)
data2[:] = data3[...,None]

谢谢你,这就是工作,[…,无]索引意味着什么?“或者你能把解释这种索引的文档链接起来吗?”PrashantGaikwad补充道。“哦,对不起,我是新来的,所以我不知道我需要这样做。”。