numpy.pad

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.pad.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

numpy.pad(array, pad_width, mode, **kwargs)[source]

填充数组。

参数:

数组:array_like的秩为N

输入数组

pad_width:{sequence,array_like,int}

填充到每个轴边缘的值数。((before_1,after_1),...(before_N,after_N))每个轴的唯一焊盘宽度。((之前,之后),)对于每个轴在垫之前和之后产生相同。(pad,)或int是所有轴的before = after = pad宽度的快捷方式。

模式:str或函数

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

'不变'

具有恒定值的焊盘。

'边缘'

数组边缘值的焊盘。

'linear_ramp'

在end_value和数组边沿值之间具有线性斜坡的焊盘。

'最大值'

沿每个轴具有全部或部分矢量的最大值的焊盘。

'意思'

具有沿着每个轴的矢量的全部或部分的平均值的垫。

'median'

具有沿每个轴的向量的全部或部分的中值的焊盘。

'最小'

沿每个轴具有所有或部分矢量的最小值的焊盘。

'反映'

带有反射的矢量的衬垫沿着每个轴反映在矢量的第一个和最后一个值上。

'symmetric'

具有沿着数组边缘镜像的矢量反射的焊盘。

'包'

具有沿着轴的向量的包装的垫。第一个值用于填充结束,结束值用于填充开始。

填充功能,见注释。

stat_length:sequence或int,可选

用于“最大值”,“平均值”,“中值”和“最小值”。用于计算统计值的每个轴边缘的值数。

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

((之前,之后),)在每个轴的统计长度之前和之后产生相同。

(stat_length,)或int是所有轴的before = after =统计长度的快捷方式。

默认值为None,以使用整个轴。

constant_values:sequence或int,可选

用于“常量”。用于设置每个轴的填充值的值。

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

((之前,之后),)对于每个轴的常数之前和之后产生相同。

(常量,)或int是所有轴的before = after =常量的快捷方式。

默认值为0。

end_values:sequence或int,可选

用于'linear_ramp'。用于linear_ramp的结束值的值,它将形成填充数组的边。

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

((before,after),)在每个轴的结束值之前和之后产生相同。

(常量,)或int是所有轴的before = after = end值的快捷方式。

默认值为0。

reflect_type:{'even','odd'},可选

用于“反射”和“对称”。“even”样式是默认值,边缘值周围没有改变的反射。对于“奇数”样式,数组的扩展部分通过从两倍的边缘值减去反射值来创建。

返回:

pad:ndarray

具有等于​​array的填充数组,其形状根据pad_width而增加。

笔记

版本1.7.0中的新功能。

对于秩大于1的数组,稍后轴的一些填充从前一个轴的填充计算。这是最容易想到的2数组,其中填充数组的角通过使用从第一轴的填充值计算。

如果使用填充函数,则应该返回等于1的长度等于向量参数的填充函数。它有以下签名:

padding_func(vector, iaxis_pad_width, iaxis, **kwargs)

哪里

向量
ndarray
已用零填充的排名1数组。填充值是vector [:pad_tuple [0]]和vector [-pad_tuple [1]:]。
iaxis_pad_width
元组
int的2元组,iaxis_pad_width [0]表示在向量开始处填充的值的数量,其中iaxis_pad_width [1]表示在向量结束处填充的值的数量。
iaxis
int
当前正在计算的轴。
kwargs
misc
该函数需要的任何关键字参数。

例子

>>> a = [1, 2, 3, 4, 5]
>>> np.lib.pad(a, (2,3), 'constant', constant_values=(4, 6))
array([4, 4, 1, 2, 3, 4, 5, 6, 6, 6])
>>> np.lib.pad(a, (2, 3), 'edge')
array([1, 1, 1, 2, 3, 4, 5, 5, 5, 5])
>>> np.lib.pad(a, (2, 3), 'linear_ramp', end_values=(5, -4))
array([ 5,  3,  1,  2,  3,  4,  5,  2, -1, -4])
>>> np.lib.pad(a, (2,), 'maximum')
array([5, 5, 1, 2, 3, 4, 5, 5, 5])
>>> np.lib.pad(a, (2,), 'mean')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> np.lib.pad(a, (2,), 'median')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> a = [[1, 2], [3, 4]]
>>> np.lib.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.lib.pad(a, (2, 3), 'reflect')
array([3, 2, 1, 2, 3, 4, 5, 4, 3, 2])
>>> np.lib.pad(a, (2, 3), 'reflect', reflect_type='odd')
array([-1,  0,  1,  2,  3,  4,  5,  6,  7,  8])
>>> np.lib.pad(a, (2, 3), 'symmetric')
array([2, 1, 1, 2, 3, 4, 5, 5, 4, 3])
>>> np.lib.pad(a, (2, 3), 'symmetric', reflect_type='odd')
array([0, 1, 1, 2, 3, 4, 5, 5, 6, 7])
>>> np.lib.pad(a, (2, 3), 'wrap')
array([4, 5, 1, 2, 3, 4, 5, 1, 2, 3])
>>> def padwithtens(vector, pad_width, iaxis, kwargs):
...     vector[:pad_width[0]] = 10
...     vector[-pad_width[1]:] = 10
...     return vector
>>> a = np.arange(6)
>>> a = a.reshape((2, 3))
>>> np.lib.pad(a, 2, padwithtens)
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]])