Possible Duplicate:
how to repeat along two axis
假设我们有以下矩阵/图像:

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

我想得到的是一个9x9矩阵,它是上面的3倍放大版本,左上角有3x3个,中上角有3x30个,等等。
我已经试过的是:
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很好地解决了这个问题。。。
有什么想法吗?(注意:所有这些解决方案都应该有效,因此在提交之前,请尝试:)

最佳答案

慢性产品:

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.]])

关于python - 准确地将Python(numpy)中的小图片调整为原始大小的倍数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13080327/

10-09 03:04