NumPy Pad: Использование np.pad() для дополнения массивов и матриц
В этом учебном пособии вы научитесь использовать мощную функцию pad в NumPy для дополнения массивов и матриц в NumPy и Python. Этот метод часто используется в глубоком обучении, особенно при разработке сверточных нейронных сетей. Умение владеть этой функцией позволит вам создавать мощные модели глубокого обучения для классификации и обработки изображений.
Функциональность этой функции не ограничивается областью глубокого обучения. Она позволяет эффективно работать с матрицами, например, обеспечивая их согласованность по размеру для возможности трансляции. Аналогично, её можно использовать в обработке изображений для добавления к изображению границ.
К концу этого учебного пособия вы научитесь:
Что такое функция
np.pad()
и как ее использоватьКак заполнить одномерные и многомерные массивы
Как настроить заполнение значений
Как использовать функцию
np.pad()
для добавления границы к изображению
Оглавление
Понимание функции клавиатуры NumPy
Перед тем как погрузиться в использование функции np.pad()
, будет полезно разобраться с базовым синтаксисом функции. Давайте рассмотрим, как выглядит функция, а затем исследуем различные параметры, которые функция предлагает:
В таблице ниже представлены параметры функции np.pad()
:
array=
Массив, который будет дополнен
array-like
N/A
pad_width=
Количество значений для заполнения по каждому краю.
sequence, array-like, integer
N/A
mode=
Тип используемого заполнения
string or function
'constant'
stat_length=
Количество значений на краю каждой оси, используемое для расчета статистического значения. Используется, когда режим является одним из:'maximum'
, 'mean'
, 'median'
, or 'minimum'
.
sequence or integer
'None'
constant_values=
Используется, когдаmode='constant'
.
sequence or scalar
0
end_values=
Используется, когдаmode='linear_ramp',
чтобы обеспечить конечное значение линейного изменения
sequence or scalar
0
reflect_type=
Используется, когда установлен режим 'reflect'
или 'symmetric'
.
'even'
or 'odd'
N/A
В основном, наиболее важными параметрами являются array=
, pad_width=
, и mode=
. Параметр mode=
позволяет настроить множество различных опций. Давайте рассмотрим некоторые из аргументов, которые вы можете использовать:
'constant'
: площадки с постоянным значением'edge'
: площадки с использованием краевых значений массива'linear-ramp'
:контактные площадки с линейным изменением между end_value и значением края массива'maximum'
: контактные площадки с максимальным значением всего или части вектора по каждой оси'mean'
: площадки со средним значением всего или части вектора вдоль каждой оси'median'
: площадки со средним значением всего или части вектора вдоль каждой оси'minimum'
: площадки с минимальным значением всего или части вектора по каждой оси'reflect'
: площадки с отражением вектора'symmetric'
: контактные площадки с отражением вектора, зеркально отраженным по краю массива'wrap'
: контактные площадки с переворотом вектора по оси'empty'
:контактные площадки с неопределенными значениями
Теперь, когда мы рассмотрели обширную документацию для функции np.pad()
, давайте начнем смотреть на некоторые практические примеры.
Заполнение одномерного массива NumPy
В этом первом примере вы узнаете, как использовать функцию pad в NumPy для дополнения массива. Давайте начнем с рассмотрения одномерного массива, чтобы лучше понять, что происходит.
В приведенном выше примере мы дополнили массив шириной 2. По умолчанию NumPy будет использовать значение 0. Мы можем настроить значение, изменив параметр constant_value=
. Давайте используем значение 100 для дополнения нашего массива:
При работе с одномерными массивами, добавление отступов может быть полезной функцией. Однако, настоящая сила этой функции раскрывается при работе с многомерными массивами, например, с изображениями. Именно это вы узнаете в следующем разделе.
Заполнение многомерного массива NumPy
В этом разделе вы узнаете, как использовать функцию np.pad()
для добавления отступов к многомерному массиву. Это может быть полезно во многих ситуациях, таких как создание сверточных нейронных сетей. Давайте посмотрим, как мы можем использовать функцию для добавления отступов к многомерному массиву с использованием константных значений:
В приведенном выше примере мы создали матрицу 3×3 со значениями от 0 до 9. Затем мы применили отступ размером 1 со значениями по умолчанию равными 0.
Заполнение массива NumPy различными количествами заполнения
Использование функции np.pad()
также позволяет применять разное количество отступов. Это может быть полезно, если вам нужно применить отступ, скажем, только к одной или двум сторонам. Для этого мы можем передать последовательность в параметр pad_width=
. Давайте посмотрим, как это выглядит:
В примере выше мы видим, что функция также принимает структуру, похожую на последовательность. Передавая кортеж из кортежей ((1, 0), (0, 1))
, мы указываем, что хотим получить отступ следующей структуры:
1 сверху
0 внизу
0 слева
1 справа
Применение этого метода является эффективным способом настройки методов заполнения ваших массивов.
Использование панели NumPy для заполнения ближайшими значениями
В этом разделе вы узнаете, как использовать NumPy для заполнения массива ближайшими значениями, найденными в массиве. Для этого необходимо изменить параметр mode=
на значение 'edge'
. Это позволяет заменить значение на значение, ближайшее к краю.
Это лучше всего демонстрируется на примере:
Мы видим, что значения смещаются к краю, что может быть полезно при добавлении заполнителя к тензору для сверточных нейронных сетей.
Использование клавиатуры NumPy для добавления границы к изображению
В этом разделе мы рассмотрим, как использовать функцию np.pad()
для добавления рамки к изображению. Поскольку изображения можно легко представить в виде массивов значений, мы можем использовать функцию np.pad()
, чтобы добавить к изображению рамку однотонного цвета.
Давайте посмотрим, как это работает. Вы можете загрузить изображение обложки и использовать его, чтобы следовать инструкциям урока, или же можете использовать своё собственное изображение.
Это возвращает следующее изображение:
Зеркальное отображение изображения с помощью клавиатуры NumPy
В этом заключительном разделе вы узнаете, как отразить изображение с помощью функции np.pad()
. Это может быть полезно, если вы хотите применить некоторые базовые преобразования к изображению. Это часто делается, например, при применении простых трансформаций для улучшения классификации в нейронных сетях.
Давайте рассмотрим, как это делается с использованием функции np.pad()
:
Это возвращает следующее изображение:
Заключение
В этом учебнике вы узнали, как использовать функцию np.pad()
для добавления отступов к массиву NumPy. Это может быть полезным методом для обучения, чтобы гарантировать, что массивы имеют заданный размер, когда должны быть определены отступы. Функция предлагает огромное количество опций для настройки результатов функции.
Вы сначала научились добавлять заполнение к массиву одномерному, затем к многомерному массиву. После этого вы научились настраивать получившийся массив. В заключение, вы освоили работу с изображениями, включая возможность добавлять к ним рамку или зеркально отражать изображение.
Дополнительные ресурсы
Чтобы узнать больше о схожих темах, посмотрите следующие учебные пособия ниже:
NumPy linspace: создание равномерно расположенных массивов с помощью
np.linspace
Пространство журналов NumPy: понимание функции np.logspace()
Плитка NumPy для упорядочения массивов
Различные способы объединения массивов NumPy в Python
Last updated