2

可能重复:
如何沿两个轴重复

假设我们有以下矩阵/图像:

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

我想要的是一个 9x9 矩阵,它是上面的 3 倍放大版本,左上角有 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 回答