numpy.pad()
方法参数:pad(array, pad_width, mode, **kwargs)
方法返回:填充后的数组
参数解释:
array:表示需要填充的数组;
pad_width:表示每个轴(axis)边缘需要填充的数值数目。
参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值。
mode:表示填充的方式(取值:str字符串或用户提供的函数)
kwargs:定值扩充(定值由kwars传入)
mode中的填充方式:
constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0
‘edge’——表示用边缘值填充
‘linear_ramp’——表示用边缘递减的方式填充
‘maximum’——表示最大值填充
‘mean’——表示均值填充
‘median’——表示中位数填
‘minimum’——表示最小值填充
‘reflect’——表示对称填充
‘symmetric’——表示对称填充
‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面
1.(都是对当时的那一行(列)来说,最大值,最小值等等)
比如:
array([[1, 2],
[3, 4]])
np.pad(B,((1,2),(2,1)),‘maximum’)
array([[4, 4, 3, 4, 4],
[2, 2, 1, 2, 2],
[4, 4, 3, 4, 4],
[4, 4, 3, 4, 4],
[4, 4, 3, 4, 4]])
这里对第一维(高度)上边填1行,下边填2行,刚刚填完应该是
array([[ 3, 4],
[1, 2],
[3, 4],
[3, 4],
[3, 4]])
都是取得当列的最大值。对左右填充的时候也是这样。
2.填充值说明:
一维数组的话constant_values=(0,2)表示对前面填0,后面填2。
例:ndarray=np.pad(array,(1,2),’constant’, constant_values=(0,2))
array [1 1 1] ——> ndarray= [0 1 1 1 2 2]
二维数组的话constant_values=(0,2)表示对第一维填充值是0,第二维填充值为2。
例:ndarray=np.pad(array,((1,1),(2,2)),‘constant’, constant_values=(0,2))
array
[[1 1]
[2 2]]
——>
ndarray=
[[0 0 0 0 2 2]
[0 0 1 1 2 2]
[0 0 2 2 2 2]
[0 0 2 2 2 2]]
3.图像四周填充说明:
N, C, H, W = img.shape
img = np.pad(img, ((0, 0), (0, 0), (p, p), (p, p)), ‘constant’)
表示前两个维度不需要pad,后两个维度,也就是第三维的高度的最上面p行和最下面p行填充,第四维宽度,就是最左边p列和最右边p列填充。
constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0。
因此这里就意为对img的四周填充进行p圈的零填充。