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]])