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/