умножить форму массива, чтобы увеличить массив - PullRequest
0 голосов
/ 10 февраля 2019

Полагаю, это очень просто, но я этого не вижу.

У меня есть массив numpy (800, 600), и я хочу создать новый массив, в 3 раза превышающий исходный размерв обоих направлениях.Когда я умножаю форму, я получаю странный результат.Я знаю, что могу сделать это с помощью нотации массива, но есть ли способ сделать это без этого?

>>> img.shape
(800, 600)
>>> img.shape * 3
(800, 600, 800, 600, 800, 600)
>>> (img.shape[0] * 3, img.shape[1] * 3)
(2400, 1800)
>>> 

У меня есть исходное изображение X, и я хочу окружить его пробелами размера изображенияво всех направлениях.Итак:

x

www
wxw
www

Я думал об использовании np.ones((new 3x size)), а затем копировать изображение с шириной смещения * высотой исходного изображения.

1 Ответ

0 голосов
/ 10 февраля 2019

Если вы хотите транслировать умножение, вы можете сформировать кортеж питона в массив numpy, а затем выполнить вычисление, например:

expanded_shape = np.array(img.shape)*3

Для самого заполнения так, как вы хотелисделать это, вы можете сделать что-то вроде этого:

expanded_img = np.ones(expanded_shape)
expanded_img[img.shape[0]:img.shape[0]*2, img.shape[1]:img.shape[1]*2] = img

Однако вы также можете использовать функцию np.pad.Это хорошо задокументировано (посмотрите на последний пример, я думаю, это именно то, что вам нужно).

...