Как бы я масштабировал двумерный массив в python?

Я не уверен, как начать масштабирование двумерного массива. Учитывая массив ниже, размеры которого равны 8×10, скажем, мне нужно было масштабировать его до 5×6 – я искал конкретные примеры в википедии, но без значительного заземления в матричной математике я немного потерялся. Если кто-то может указать мне в правильном направлении, я бы очень признателен!

[ [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] ] 

Поскольку ваш массив похож на бинарное изображение буквы «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)) 

и 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) 

который не идеален, но вы можете легко изменить 255 на 1. Кроме того, если вы получаете версию для разработки Scipy, в настоящее время версию 9, то у вас есть другие параметры (прокрутите вниз до imresize – no anchor), которые вы можете ввести для увеличения, например, метод интерполяции и режим PIL.

Если вы сомневаетесь, используйте библиотеку!

PIL имеет функции для изменения размеров изображений, считая, что это то, что вы используете. Чтобы преобразовать список списков в изображение PIL, сначала преобразуйте его в массив numpy, затем в формат PIL . После того, как вы закончите, вы можете изменить процесс, чтобы снова получить список списков (если вы действительно этого хотите).