numpy.pad#

numpy.pad(массив, pad_width, mode='constant', **kwargs)[источник]#

Дополнить массив.

Параметры:
массивarray_like ранга N

Массив для заполнения.

pad_width{sequence, array_like, int, dict}

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

modestr или функция, опционально

Одно из следующих строковых значений или пользовательская функция.

‘constant’ (по умолчанию)

Заполняет постоянным значением.

‘edge’

Заполняет краевыми значениями массива.

'linear_ramp'

Заполняет линейным наклоном между end_value и значением края массива.

'maximum'

Дополняет максимальным значением всего или части вектора вдоль каждой оси.

'mean'

Заполняет средним значением всего вектора или его части вдоль каждой оси.

'median'

Заполняет медианным значением всего или части вектора вдоль каждой оси.

‘minimum’

Заполняет минимальным значением всего вектора или его части вдоль каждой оси.

'reflect'

Заполняет отражением вектора, зеркально отраженного на первом и последнем значениях вектора вдоль каждой оси.

'symmetric'

Заполняет отражением вектора, зеркально отображённого по краю массива.

‘wrap’

Дополняет обёрткой вектора вдоль оси. Первые значения используются для дополнения конца, а конечные значения — для дополнения начала.

‘empty’

Заполняет неопределенными значениями.

Функция заполнения, см. Примечания.

stat_lengthпоследовательность или int, опционально

Используется в 'maximum', 'mean', 'median' и 'minimum'. Количество значений на краю каждой оси, используемое для вычисления статистического значения.

((before_1, after_1), ... (before_N, after_N)) уникальные статистические длины для каждой оси.

(before, after) или ((before, after),) дает одинаковые длины статистики до и после для каждой оси.

(stat_length,) или int является сокращением для before = after = statistic длина для всех осей.

По умолчанию None, чтобы использовать всю ось.

constant_valuesпоследовательность или скаляр, опционально

Используется в 'constant'. Значения для установки заполненных значений для каждой оси.

((before_1, after_1), ... (before_N, after_N)) уникальные константы заполнения для каждой оси.

(before, after) или ((before, after),) даёт одинаковые до и после константы для каждой оси.

(constant,) или constant является сокращением для before = after = constant для всех осей.

По умолчанию 0.

end_valuesпоследовательность или скаляр, опционально

Используется в 'linear_ramp'. Значения, используемые для конечного значения linear_ramp и которые будут формировать край дополненного массива.

((before_1, after_1), ... (before_N, after_N)) уникальные конечные значения для каждой оси.

(before, after) или ((before, after),) дает одинаковые значения до и после конечных значений для каждой оси.

(constant,) или constant является сокращением для before = after = constant для всех осей.

По умолчанию 0.

reflect_type{‘even’, ‘odd’}, опционально

Используется в 'reflect' и 'symmetric'. Стиль 'even' является стилем по умолчанию с неизменным отражением вокруг краевого значения. Для стиля 'odd' расширенная часть массива создаётся путём вычитания отражённых значений из удвоенного краевого значения.

Возвращает:
padndarray

Дополненный массив ранга, равного array с увеличенной формой в соответствии с pad_width.

Примечания

Для массива с рангом больше 1 часть заполнения последующих осей вычисляется из заполнения предыдущих осей. Это проще всего представить с массивом ранга 2, где углы заполненного массива вычисляются с использованием заполненных значений из первой оси.

Функция заполнения, если используется, должна изменять массив ранга 1 на месте. Она имеет следующую сигнатуру:

padding_func(vector, iaxis_pad_width, iaxis, kwargs)

где

векторndarray

Массив ранга 1, уже заполненный нулями. Заполненные значения — это vector[:iaxis_pad_width[0]] и vector[-iaxis_pad_width[1]:].

iaxis_pad_widthкортеж

Кортеж из 2 целых чисел, iaxis_pad_width[0] представляет количество значений, добавленных в начале вектора, где iaxis_pad_width[1] представляет количество значений, добавленных в конце вектора.

iaxisint

Ось, которая в настоящее время вычисляется.

kwargsdict

Любые ключевые аргументы, которые требует функция.

Примеры

>>> import numpy as np
>>> a = [1, 2, 3, 4, 5]
>>> np.pad(a, (2, 3), 'constant', constant_values=(4, 6))
array([4, 4, 1, ..., 6, 6, 6])
>>> np.pad(a, (2, 3), 'edge')
array([1, 1, 1, ..., 5, 5, 5])
>>> np.pad(a, (2, 3), 'linear_ramp', end_values=(5, -4))
array([ 5,  3,  1,  2,  3,  4,  5,  2, -1, -4])
>>> np.pad(a, (2,), 'maximum')
array([5, 5, 1, 2, 3, 4, 5, 5, 5])
>>> np.pad(a, (2,), 'mean')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> np.pad(a, (2,), 'median')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> a = [[1, 2], [3, 4]]
>>> np.pad(a, ((3, 2), (2, 3)), 'minimum')
array([[1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1],
       [3, 3, 3, 4, 3, 3, 3],
       [1, 1, 1, 2, 1, 1, 1],
       [1, 1, 1, 2, 1, 1, 1]])
>>> a = [1, 2, 3, 4, 5]
>>> np.pad(a, (2, 3), 'reflect')
array([3, 2, 1, 2, 3, 4, 5, 4, 3, 2])
>>> np.pad(a, (2, 3), 'reflect', reflect_type='odd')
array([-1,  0,  1,  2,  3,  4,  5,  6,  7,  8])
>>> np.pad(a, (2, 3), 'symmetric')
array([2, 1, 1, 2, 3, 4, 5, 5, 4, 3])
>>> np.pad(a, (2, 3), 'symmetric', reflect_type='odd')
array([0, 1, 1, 2, 3, 4, 5, 5, 6, 7])
>>> np.pad(a, (2, 3), 'wrap')
array([4, 5, 1, 2, 3, 4, 5, 1, 2, 3])
>>> def pad_with(vector, pad_width, iaxis, kwargs):
...     pad_value = kwargs.get('padder', 10)
...     vector[:pad_width[0]] = pad_value
...     vector[-pad_width[1]:] = pad_value
>>> a = np.arange(6)
>>> a = a.reshape((2, 3))
>>> np.pad(a, 2, pad_with)
array([[10, 10, 10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10, 10, 10],
       [10, 10,  0,  1,  2, 10, 10],
       [10, 10,  3,  4,  5, 10, 10],
       [10, 10, 10, 10, 10, 10, 10],
       [10, 10, 10, 10, 10, 10, 10]])
>>> np.pad(a, 2, pad_with, padder=100)
array([[100, 100, 100, 100, 100, 100, 100],
       [100, 100, 100, 100, 100, 100, 100],
       [100, 100,   0,   1,   2, 100, 100],
       [100, 100,   3,   4,   5, 100, 100],
       [100, 100, 100, 100, 100, 100, 100],
       [100, 100, 100, 100, 100, 100, 100]])
>>> a = np.arange(1, 7).reshape(2, 3)
>>> np.pad(a, {1: (1, 2)})
array([[0, 1, 2, 3, 0, 0],
       [0, 4, 5, 6, 0, 0]])
>>> np.pad(a, {-1: 2})
array([[0, 0, 1, 2, 3, 0, 0],
       [0, 0, 4, 5, 6, 0, 0]])
>>> np.pad(a, {0: (3, 0)})
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [1, 2, 3],
       [4, 5, 6]])
>>> np.pad(a, {0: (3, 0), 1: 2})
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 2, 3, 0, 0],
       [0, 0, 4, 5, 6, 0, 0]])