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

如何在python中缩放二维数组?,python,matrix,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,

我不知道如何缩放二维数组。考虑到下面的数组,其尺寸为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]
]

如有疑问,请使用图书馆


具有调整图像大小的功能,假设这是您所追求的缩放类型。要将列表列表转换为PIL图像,请首先将其转换为numpy数组。完成后,您可以反转此过程以再次获取列表列表(如果确实需要)。

由于您的数组看起来像是小写字母“a”的二进制图像,我猜您的意思是图像意义上的缩放

要做到这一点,我建议使用scipy.misc中的
imresize
函数(我相信它取自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))
而纽伊姆就是这样

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)

这并不完美,但您可以很容易地将255更改为1。此外,如果您获得了Scipy的开发版本,当前版本为9,那么您可以(向下滚动至imresize-无锚定)输入imresize,例如插值方法和PIL模式。

当您说缩放时,您的确切意思是什么?将其视为图片?缩放对于矩阵(即,它是一种特殊的仿射变换)具有特定的意义,它不会改变矩阵的大小。所以我猜你在这里指的是其他的东西,但不清楚那是什么。是的,把它当作一张图片。我想这就是我找到解决方案的问题所在,因为矩阵变换似乎有点不同。在某种意义上,我想在任意缩放时“保留”其中包含的数据为什么直接使用PIL时使用scipy更有意义?哇,我完全认为直接使用PIL是一种黑客行为,但也许这是最好的解决方法go@martineau,可能是因为您想在scipy中使用结果?这是我的想法。