インターリーブされた「モザイク」パターンを使用して一つの大きな配列に4つの小さな配列を結合するための効率的な方法はありますか?

ezrabru:

私は、同じ形状の4つの正方形アレイを有します

array1 = 1*np.ones((10,10))
array2 = 2*np.ones((10,10))
array3 = 3*np.ones((10,10))
array4 = 4*np.ones((10,10))

私は、次のようなインターリーブされたモザイクパターンにおける一つの大きな配列にそれらを再結合します:

result = np.asarray([[1,2,1,2,...,1,2],\
                     [3,4,3,4,...,3,4],\
                     [1,2,1,2,...,1,2],\
                     ...
                     [3,4,3,4,...,3,4]])

どこにresult二回、元の個々の画像のように、両方の次元に大きな通りです。

これを行うための効率的な方法はありますか?

私の質問を説明するために、私は一定の値を含む配列を使用しますが、現実には、これらの4つの配列は、異なる画像になります。

カールKnechtel:

二つの共通のnumpyの中でデータをインターレースためのアプローチです。

A)を割り当てるデータが行くべき場所に対応するブランク結果配列のスライス、各ソース:

result = np.zeros((20, 20)) # allocate space
result[::2, ::2] = array1 # put those values in the appropriate spots
result[::2, 1::2] = array2
result[1::2, ::2] = array3
result[1::2, 1::2] = array4

単一のアレイで一緒にデータを貼り、その後、葉はそれがインターレースような方法でデータを平らにするために再形成するために積み重ねB)を使用。これは通常、試行錯誤のビットを必要としますが、REPLで少し遊んでた後、私は思い付きました:

result = np.hstack((np.dstack((array1, array2)), np.dstack((array3, array4)))).reshape(20, 20)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=24000&siteId=1