Функция pad
Функция pad дополняет массив NumPy
значениями по краям. Она позволяет управлять
тем, как именно будет расширен массив:
можно заполнить отступы константами,
скопировать значения с краёв, отразить
их или применить другие режимы.
Синтаксис
np.pad(arr, pad_width, mode='constant', **kwargs)
Параметры функции:
- ⁅b⁆arr⁅/b⁆ - исходный массив, который нужно дополнить
- ⁅b⁆pad_width⁅/b⁆ - количество добавляемых значений по каждому измерению (число или кортеж)
- ⁅b⁆mode⁅/b⁆ - режим заполнения отступов (по умолчанию 'constant')
-
⁅b⁆kwargs⁅/b⁆ - дополнительные
параметры для режимов (например,
constant_valuesилиreflect_type)
Пример
Давайте дополним одномерный массив константными значениями с обоих концов:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.pad(arr, pad_width=2, mode='constant', constant_values=0)
print(res)
Результат выполнения кода:
[0 0 1 2 3 4 5 0 0]
Пример
Если нужно добавить разное количество значений слева и справа, передайте кортеж из двух чисел:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.pad(arr, pad_width=(3, 1), mode='constant', constant_values=9)
print(res)
Результат выполнения кода:
[9 9 9 1 2 3 4 5 9]
Пример
Для двумерного массива можно указать отступы для каждой оси отдельно. Передайте кортеж кортежей, где каждый внутренний кортеж задаёт отступы с двух сторон соответствующей оси:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = np.pad(arr, pad_width=((1, 2), (2, 1)), mode='constant', constant_values=0)
print(res)
Результат выполнения кода:
[[0 0 0 0 0 0]
[0 0 1 2 3 0]
[0 0 4 5 6 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]]
Пример
Режим 'edge' заполняет отступы
значениями с краёв массива:
import numpy as np
arr = np.array([10, 20, 30, 40])
res = np.pad(arr, pad_width=3, mode='edge')
print(res)
Результат выполнения кода:
[10 10 10 10 20 30 40 40 40 40]
Пример
Режим 'reflect' отражает
значения массива относительно края.
Параметр reflect_type задаёт
тип отражения: 'even' (по умолчанию)
или 'odd':
import numpy as np
arr = np.array([1, 2, 3, 4])
res = np.pad(arr, pad_width=3, mode='reflect', reflect_type='even')
print(res)
Результат выполнения кода:
[3 2 1 1 2 3 4 4 3 2]
Пример
Режим 'wrap' циклически
повторяет значения массива:
import numpy as np
arr = np.array([5, 6, 7])
res = np.pad(arr, pad_width=4, mode='wrap')
print(res)
Результат выполнения кода:
[6 7 5 6 5 6 7 5 6 7 5]
Смотрите также
-
функцию
reshape,
которая изменяет форму массива без изменения данных -
функцию
expand_dims,
которая добавляет новое измерение к массиву -
функцию
tile,
которая повторяет массив в виде плитки -
функцию
repeat,
которая повторяет элементы массива