numpy.pad#

numpy.pad(array, pad_width, mode='constant', **kwargs)[源代码]#

填充数组.

参数:
array秩为 N 的 array_like

要填充的数组.

pad_width{sequence, array_like, int}

填充到每个轴边缘的值的数量. ((before_1, after_1), ... (before_N, after_N)) 每个轴的唯一填充宽度. (before, after)((before, after),) 产生每个轴相同的 before 和 after 填充. (pad,)int 是所有轴的 before = after = pad 宽度的快捷方式.

modestr 或 function, 可选

以下字符串值之一或用户提供的函数.

‘constant’ (默认)

用一个常数值填充.

‘edge’

用数组的边缘值填充.

‘linear_ramp’

使用 end_value 和数组边缘值之间的线性渐变填充.

‘maximum’

使用沿每个轴的向量的全部或部分的最大值填充.

‘mean’

使用沿每个轴的向量的全部或部分的平均值填充.

‘median’

使用沿每个轴的向量的全部或部分的中值填充.

‘minimum’

使用沿每个轴的向量的全部或部分的最小值填充.

‘reflect’

使用向量的反射填充,该反射在沿每个轴的向量的第一个和最后一个值上镜像.

‘symmetric’

使用向量的反射填充,该反射沿数组的边缘镜像.

‘wrap’

使用沿轴的向量的wrap填充.第一个值用于填充末尾,末尾值用于填充开头.

‘empty’

用未定义的值填充.

<function>

填充函数,请参见 Notes.

stat_length序列或整数,可选

在"maximum","mean","median"和"minimum"中使用.用于计算统计值的每个轴边缘的值的数量.

((before_1, after_1), ... (before_N, after_N)) 每个轴的唯一统计长度.

(before, after)((before, after),) 产生每个轴相同的 before 和 after 统计长度.

(stat_length,)int 是所有轴的 before = after = statistic 长度的快捷方式.

默认为 None ,使用整个轴.

constant_valuessequence 或 scalar, 可选

在"constant"中使用.用于设置每个轴的填充值的值.

((before_1, after_1), ... (before_N, after_N)) 每个轴的唯一填充常量.

(before, after)((before, after),) 产生每个轴相同的 before 和 after 常量.

(constant,)constant 是所有轴的 before = after = constant 的快捷方式.

默认为 0.

end_valuessequence 或 scalar, 可选

在"linear_ramp"中使用.用于线性渐变的结束值,并将形成填充数组边缘的值.

((before_1, after_1), ... (before_N, after_N)) 每个轴的唯一结束值.

(before, after)((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_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]])