2016-04-09 21 views
0

私は、それぞれが画像(x、y、rgb)を表す2つの3D numpy配列を持っています。マゼンタのピクセル(255,0,255)を除いて、小さいイメージを大きなイメージに書きたいと思います。私はすべてのマゼンタのピクセルを表す2Dマスクを生成する方法を知っています - 3D配列操作でこの2Dマスクを使用するにはどうすればいいですか?2Dマスクを使用して大型3Dアレイのスライスに3D numpy配列を書き込む

答えて

2

これは一例です。それは正確には正確ではありません(すべての値は1つまたは2つです)。うまくいけば、これはあなたの状況で動作します:numpypyでこれを使用しようとしている人のために

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は大きな画像内のサブイメージの位置です)

+0

、それは動作しません - どうやら[1 -argはまだ実装されていません。](https://bitbucket.org/pypy/numpy/issues/41/implementation-of-1-arg-numpywhere)pypyがサポートする可能性の高い方法がありますか? –

関連する問題