numpy.pad добавляет в два раза больше, чем объявлено - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь заполнить 2-мерный массив, чтобы он соответствовал размеру изображения, над которым я работаю, но функция np.pad удваивает заполнение, которое я запрашиваю:

import numpy as np

gaussian = [
    [0.003, 0.013, 0.022, 0.013, 0.003],
    [0.013, 0.059, 0.097, 0.059, 0.013],
    [0.022, 0.097, 0.159, 0.097, 0.022],
    [0.013, 0.059, 0.097, 0.059, 0.013],
    [0.003, 0.013, 0.022, 0.013, 0.003]
]

gaussian = np.pad(gaussian, ((2, 2), (2, 2)), 'constant')

Приведенный выше код в идеале должен выводить массив (7, 7) (по крайней мере, это то, что я ожидал), но вместо этого я получаю вывод в виде (9, 9) 2d массива.

1 Ответ

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

Ваш код ведет себя точно так, как указано в документации .В частности, второй параметр гласит:

pad_width: {sequence, array_like, int}

Количество значений, добавленных ккрая каждой оси.((before_1, after_1),… (before_N, after_N)) уникальная ширина площадки для каждой оси.((до, после),) дает одинаковые до и после площадки для каждой оси.(pad,) или int - это сокращение для before = after = ширина площадки для всех осей.

Таким образом, вы запрашиваете два дополнительных элемента на каждой стороне вашего массива в каждом измерении с помощью ((2, 2), (2, 2)),2 + 5 + 2 = 9, как и ожидалось.

Примеры допустимых опций для pad_width, которые привели бы к выходному массиву 7x7:

  • 1
  • (1,)
  • ((0, 2),)
  • ((2, 0), (1, 1))

Возможно, вы захотите, чтобы любой из первых двух, если вы хотите, чтобы отступ был симметричным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...