numpy.pad#
- numpy.pad(array, pad_width, mode='constant', **kwargs)[源码]#
填充数组。
- 参数:
- arrayN 维数组
要填充的数组。
- pad_width{序列, 类数组, 整型}
每个轴边缘填充的值的数量。
((before_1, after_1), ... (before_N, after_N))
为每个轴的独特填充宽度。(before, after)
或((before, after),)
为每个轴提供相同的前后填充。(pad,)
或int
是所有轴的前后填充宽度都相等(即 `before = after = pad width`)的快捷方式。- mode字符串或函数,可选
以下字符串值之一或用户提供的函数。
- ‘constant’ (默认)
用一个常量值填充。
- ‘edge’
用数组的边缘值填充。
- ‘linear_ramp’
用 `end_value` 和数组边缘值之间的线性斜坡填充。
- ‘maximum’
用每个轴上向量的全部或部分的最大值填充。
- ‘mean’
用每个轴上向量的全部或部分的平均值填充。
- ‘median’
用每个轴上向量的全部或部分的中位数填充。
- ‘minimum’
用每个轴上向量的全部或部分的最小值填充。
- ‘reflect’
用向量沿每个轴在向量的第一个和最后一个值上镜像的反射填充。
- ‘symmetric’
用向量沿数组边缘镜像的反射填充。
- ‘wrap’
用向量沿轴的循环填充。开头的值用于填充末尾,末尾的值用于填充开头。
- ‘empty’
用未定义的值填充。
- <函数>
填充函数,参见说明。
- stat_length序列或整型,可选
用于 ‘maximum’、‘mean’、‘median’ 和 ‘minimum’。每个轴边缘用于计算统计值的数量。
((before_1, after_1), ... (before_N, after_N))
每个轴的独特统计长度。(before, after)
或((before, after),)
为每个轴提供相同的前后统计长度。(stat_length,)
或int
是所有轴的前后统计长度都相等(即 `before = after = statistic` length)的快捷方式。默认值为
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’ 模式。用于线性斜坡的终止值,并构成填充数组边缘的值。
((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)
其中
- vectorndarray
一个已用零填充的 1 维数组。填充的值是 vector[:iaxis_pad_width[0]] 和 vector[-iaxis_pad_width[1]:]。
- iaxis_pad_widthtuple
一个由两个整数组成的元组,iaxis_pad_width[0] 表示在 `vector` 开头填充的值的数量,iaxis_pad_width[1] 表示在 `vector` 末尾填充的值的数量。
- 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]])