Функция пэда в Numpy

Я использую np.pad для заполнения массива 4d

a = np.zeros((2,2,2,2))
a = a+7
apad = np.pad(a,((0,0),(0,0),(1,1),(1,1)),'constant')

Он дополняет каждый 2d-массив строкой и столбцом нулей. Я не уверен, как работает этот np.pad, особенно второй параметр функции. Я также пытался понять это с помощью более простого массива, это тоже не ясно.

a = np.arange(20)
a = np.reshape(a,(4,5))
a = np.pad(a,((1,0)),'constant')
print(a)

>>>[[ 0  0  0  0  0  0]
    [ 0  0  1  2  3  4]
    [ 0  5  6  7  8  9]
    [ 0 10 11 12 13 14]
    [ 0 15 16 17 18 19]]

Кто-нибудь может кратко объяснить, как работает второй параметр в np.pad()?

Вы видели документы? numpy.org/doc/stable/reference/generated/numpy.pad.html

bkakilli 11.12.2020 05:16

Второй параметр сообщает, насколько значение заполнения будет дополнено по каждой оси. Поскольку вы указали ((1, 0)), каждая ось будет дополнена один раз в начале и 0 раз в конце. Попробуйте np.pad(a,((1, 0), (0, 1)),'constant') Думаю, это поможет прояснить это.

ssp 11.12.2020 05:19

В двумерном массиве есть 4 стороны, которые можно заполнить. Посмотрите, например, на np.pad(np.arange(1,5).reshape(2,2), ((1,2),(3,4)))

hpaulj 11.12.2020 06:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
275
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Начнем со второго примера (двумерный массив).

Когда вы запускаете np.pad(a, (1,0), 'constant'), тогда (1,0) означает:

  • добавить 1 элемент раньше,
  • добавить 0 элементов после,
  • так как вы ставите только одну (до, после) пару, это относится к каждое измерение.

Результат таков:

  • 1 строка была добавлена ​​до массива и ничего после (для первого измерения),
  • 1 столбец был добавлен до массива и ничего после (для второго измерения),
  • добавленные элементы по умолчанию 0,

и, следовательно, результат:

array([[ 0,  0,  0,  0,  0,  0],
       [ 0,  0,  1,  2,  3,  4],
       [ 0,  5,  6,  7,  8,  9],
       [ 0, 10, 11, 12, 13, 14],
       [ 0, 15, 16, 17, 18, 19]])

А теперь посмотрите на свой первый пример. Давайте создадим ваш массив также типа int:

a = np.zeros((2,2,2,2), dtype=int)
a = a + 7

Затем, когда вы бежите apad = np.pad(a, ((0,0),(0,0),(1,1),(1,1)), 'constant'), тогда:

  • в первом и втором измерении ничего не добавлялось (первые 2 пары (0,0)),
  • в третьем и четвертом измерении добавлено по 1 элементу, как до, так и после (2 следующих пары (1,1)).

Итак, результат:

array([[[[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]],

        [[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]]],


       [[[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]],

        [[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]]]])

Отличное объяснение, теперь я понимаю, как это работает. Большое спасибо!

Deepak velu 12.12.2020 07:43

Другие вопросы по теме