numpy.pad#
- numpy.pad(array, pad_width, mode='constant', **kwargs)[源代码]#
填充一个数组.
- 参数:
- arrayN 秩的类数组对象
要填充的数组.
- pad_width{sequence, array_like, int}
每个轴边缘填充的值的数量.``((before_1, after_1), … (before_N, after_N))`` 每个轴的唯一填充宽度.``(before, after)`` 或
((before, after),)
为每个轴产生相同的之前和之后的填充.``(pad,)`` 或int
是所有轴的之前 = 之后 = 填充宽度的快捷方式.- modestr 或 函数, 可选
以下字符串值之一或用户提供的函数.
- ‘常量’ (默认)
用一个常量值填充.
- ‘边缘’
用数组的边缘值填充.
- ‘linear_ramp’
在 end_value 和数组边缘值之间使用线性斜坡进行填充.
- ‘最大’
在每个轴上用向量的所有或部分的最大值填充.
- ‘平均’
在每个轴上用所有或部分向量的平均值填充.
- ‘中位数’
在每个轴上用向量的所有或部分的中值填充.
- ‘最小’
在每个轴上用向量所有或部分的最小值填充.
- ‘reflect’
在每个轴上,使用向量在第一个和最后一个值处镜像的反射来填充.
- ‘对称’
使用数组边缘沿矢量反射的反射填充.
- ‘wrap’
沿着轴对向量的包裹进行填充.首先使用前面的值来填充末尾,然后使用末尾的值来填充开头.
- ‘空’
填充未定义的值.
在 1.17 版本加入.
- <函数>
填充函数,见注释.
- stat_length序列或整数,可选
在 ‘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),)
为每个轴生成相同的 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.7.0 版本加入.
对于秩大于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] 表示在向量开始处填充的值的数量,其中 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]])