如何在python中缩放二维数组?
我不知道如何缩放二维数组。考虑到下面的数组,其尺寸为8x10,假设我需要将其缩放到5x6——我在维基百科上寻找了具体的例子,但是没有太多矩阵数学基础,我有点迷茫。如果有人能给我指出正确的方向,我会非常感激如何在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,
[
[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中使用结果?这是我的想法。