我如何在python中缩放二维数组?

col*_*fer 4 python matrix

我不知道如何扩展二维数组.鉴于下面的数组,其尺寸为8x10,说我需要将其缩放到5x6 - 我在维基百科上寻找了具体的例子,但是在矩阵数学中没有多少基础我有点迷失.如果有人能指出我正确的方向,我真的很感激!

[
 [0, 0, 1, 1, 1, 1, 0, 0],
 [0, 1, 1, 1, 1, 1, 1, 0],
 [0, 1, 0, 0, 0, 1, 1, 1],
 [0, 0, 0, 0, 0, 0, 1, 1],
 [0, 0, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 0, 0, 0, 0, 1, 1],
 [1, 1, 0, 0, 0, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1],
 [0, 1, 1, 1, 1, 0, 1, 1]
]
Run Code Online (Sandbox Code Playgroud)

Jus*_*eel 10

由于你的数组看起来像是一个小写'a'字母的二进制图像,我猜你的意思是你在图像意义上缩放.

为此,我建议imresize在scipy.misc中使用该函数(我相信它取自PIL).这是一个例子:

import numpy as np
from scipy.misc import imresize

img = np.array([
 [0, 0, 1, 1, 1, 1, 0, 0],
 [0, 1, 1, 1, 1, 1, 1, 0],
 [0, 1, 0, 0, 0, 1, 1, 1],
 [0, 0, 0, 0, 0, 0, 1, 1],
 [0, 0, 1, 1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1],
 [1, 1, 0, 0, 0, 0, 1, 1],
 [1, 1, 0, 0, 0, 1, 1, 1],
 [1, 1, 1, 1, 1, 1, 1, 1],
 [0, 1, 1, 1, 1, 0, 1, 1]
])
newimg = imresize(img, (6,5))
Run Code Online (Sandbox Code Playgroud)

然后是newimg

array([[  0,   0, 255, 255,   0],
       [  0, 255, 255, 255, 255],
       [  0,   0,   0,   0, 255],
       [255, 255, 255, 255, 255],
       [255, 255,   0,   0, 255],
       [255, 255, 255, 255, 255]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)

这并不完美,但你可以轻松地将255改为1.此外,如果您获得Scipy的开发版本(当前版本为9),那么您还可以输入一些其他参数(向下滚动到imresize - 无锚点),这些参数可以输入为imresize,例如插值方法和PIL模式.