0
我有兩個3D numpy陣列,每個陣列都代表一個圖像(x,y,rgb)。我想將較小的圖像寫入較大的圖像,除了任何洋紅色像素(255,0,255)。我知道如何生成代表所有洋紅色像素的2D遮罩 - 我如何在3D陣列操作中使用此2D遮罩?使用2D蒙版將3D numpy陣列寫入更大3D陣列的切片
我有兩個3D numpy陣列,每個陣列都代表一個圖像(x,y,rgb)。我想將較小的圖像寫入較大的圖像,除了任何洋紅色像素(255,0,255)。我知道如何生成代表所有洋紅色像素的2D遮罩 - 我如何在3D陣列操作中使用此2D遮罩?使用2D蒙版將3D numpy陣列寫入更大3D陣列的切片
下面是一個例子。這不完全準確(所有的值都是一兩個),但給出了這個想法。希望這部作品在您的情況:
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
是較大的圖像內的子圖像的位置)
對於那些試圖在numpypy利用這一點,它不會工作 - 顯然[1 -arg哪裏還沒有實現。](https://bitbucket.org/pypy/numpy/issues/41/implementation-of-1-arg-numpywhere)還有另一種方法,pypy有更好的支持機會嗎? –