使用 2D 掩码将 3D numpy 数组写入更大的 3D 数组的切片

Writing a 3D numpy array into a slice of a larger 3D array using a 2D mask

我有两个 3D numpy 数组,每个数组代表一个图像 (x, y, rgb)。我想将较小的图像写入较大的图像,除了任何洋红色像素(255、0、255)。我知道如何生成代表所有洋红色像素的 2D 蒙版——如何在 3D 阵列操作中使用此 2D 蒙版?

这是一个例子。它并不完全准确(所有值都是一或两个),但给出了想法。希望这适用于您的情况:

image1 = np.ones((5,5,16))
image2 = 2 * np.ones((3,3,16))
mask = np.array([[0, 1, 1], [0, 0, 1], [1, 0, 0]])
x, y = np.where(mask)
image1[1:4,1:4,:][x,y,:] = image2[x,y,:]

1:4,1:4是子图在大图中的位置。)