2

重複の可能性:
2 つの軸に沿って繰り返す方法

次のマトリックス/画像があるとします。

x = array([[1, 0, 1],
           [0, 1, 0],
           [1, 0, 1]])

私が取得したいのは、上記の 3 倍に拡大されたバージョンである 9x9 マトリックスで、左上隅に 3x3 のもの、中央上部に 3x3 の 0 などがあります。

私がすでに試したことは次のとおりです。

scipy.ndimage.interpolation.zoom (x, 3, order=(anything))、たとえば order=0 はこれを返します:

array([[1, 1, 0, 0, 0, 0, 1, 1, 1],
       [1, 1, 0, 0, 0, 0, 1, 1, 1],
       [0, 0, 1, 1, 1, 1, 0, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0, 0],
       [0, 0, 1, 1, 1, 1, 0, 0, 0],
       [1, 1, 0, 0, 0, 0, 1, 1, 1],
       [1, 1, 0, 0, 0, 0, 1, 1, 1],
       [1, 1, 0, 0, 0, 0, 1, 1, 1]])

scipy.misc.imresize (x, (9,9), interp="nearest") (事実上 PIL から)、別の創造的な (しかし間違った) 解決策を考え出します。

一方、MATLAB imresize は問題を完全に解決します...

何か案は?(注:これらのソリューションはすべて機能するはずなので、送信する前に試してみてください:))

4

1 に答える 1

5

クロネッカー製品:

numpy.kron(x,numpy.ones((3,3)))

結果:

array([[ 1.,  1.,  1.,  0.,  0.,  0.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  0.,  0.,  0.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  0.,  0.,  0.,  1.,  1.,  1.],
       [ 0.,  0.,  0.,  1.,  1.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  1.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  1.,  1.,  0.,  0.,  0.],
       [ 1.,  1.,  1.,  0.,  0.,  0.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  0.,  0.,  0.,  1.,  1.,  1.],
       [ 1.,  1.,  1.,  0.,  0.,  0.,  1.,  1.,  1.]])
于 2012-10-26T03:30:41.437 に答える