1 基本介绍
对原本的矩阵进行填充
numpy.pad(array, pad_width, mode='constant', **kwargs)
array | 待填充的矩阵 |
pad_width | 要填充的位置 |
mode | 填充方式 |
2 参数举例
2.0 使用的数据
import numpy as np
a=np.arange(12).reshape(3,4)
a
'''
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
'''
2.1 pad_width
先行后列
np.pad(a,((1,2)),'constant',constant_values=-1)
'''
array([[-1, -1, -1, -1, -1, -1, -1],
[-1, 0, 1, 2, 3, -1, -1],
[-1, 4, 5, 6, 7, -1, -1],
[-1, 8, 9, 10, 11, -1, -1],
[-1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1]])
'''
#左边和上面填充1格,右边和下面填充2格
np.pad(a,((1,2),(3,4)),
'constant',constant_values=-1)
'''
array([[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, 0, 1, 2, 3, -1, -1, -1, -1],
[-1, -1, -1, 4, 5, 6, 7, -1, -1, -1, -1],
[-1, -1, -1, 8, 9, 10, 11, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]])
'''
#上一行下两行,左3行右4行
2.2 mode
2.2.1 constant
用常数填充,可用constant_values设置
np.pad(a,((1,2)),'constant',constant_values=-1)
'''
array([[-1, -1, -1, -1, -1, -1, -1],
[-1, 0, 1, 2, 3, -1, -1],
[-1, 4, 5, 6, 7, -1, -1],
[-1, 8, 9, 10, 11, -1, -1],
[-1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1]])
'''
#均填充一样的值
np.pad(a,((1,2)),'constant',constant_values=(3,4))
'''
array([[ 3, 3, 3, 3, 3, 4, 4],
[ 3, 0, 1, 2, 3, 4, 4],
[ 3, 4, 5, 6, 7, 4, 4],
[ 3, 8, 9, 10, 11, 4, 4],
[ 3, 4, 4, 4, 4, 4, 4],
[ 3, 4, 4, 4, 4, 4, 4]])
'''
np.pad(a,((1,2),(3,4)),
'constant',constant_values=(-1,-2))
'''
array([[-1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2],
[-1, -1, -1, 0, 1, 2, 3, -2, -2, -2, -2],
[-1, -1, -1, 4, 5, 6, 7, -2, -2, -2, -2],
[-1, -1, -1, 8, 9, 10, 11, -2, -2, -2, -2],
[-1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2],
[-1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2]])
'''
#上和左是第一个值,下和右是第二个值
#左下算左,右上算右
np.pad(a,((1,2),(3,4)),
'constant',constant_values=((-1,-2),(-3,-4)))
'''
array([[-3, -3, -3, -1, -1, -1, -1, -4, -4, -4, -4],
[-3, -3, -3, 0, 1, 2, 3, -4, -4, -4, -4],
[-3, -3, -3, 4, 5, 6, 7, -4, -4, -4, -4],
[-3, -3, -3, 8, 9, 10, 11, -4, -4, -4, -4],
[-3, -3, -3, -2, -2, -2, -2, -4, -4, -4, -4],
[-3, -3, -3, -2, -2, -2, -2, -4, -4, -4, -4]])
'''
#先行后列,行上1下2,列左3右4
2.2.2 edge
用边缘填充
np.pad(a,((1,2),(3,4)),
'edge')
2.2.3 linear_ramp
边缘递减,即取得是递减到0时的数
np.pad(a,((1,2),(3,4)),
'linear_ramp')
2.2.4 maximum
选取最大的进行填充,注意二维是先进行选择最大填充行(蓝),再选择最大填充列(绿)
np.pad(a,((1,2),(3,4)),
'maximum')
2.2.5 mean 均值
同样先行后列(向上取整)
np.pad(a,((1,2),(3,4)),
'mean')
2.2.6 median 中位数
同样先行后列(向上取整)
np.pad(a,((1,2),(3,4)),
'median')
2.2.7 minmum 最小值
同样先行后列
np.pad(a,((1,2),(3,4)),
'minimum')
2.2.8 reflect 关于边缘值对称
np.pad(a,((1,2),(3,4)),
'reflect')
2.2.9 symmetric 赋值边缘值的对称
np.pad(a,((1,2),(3,4)),
'symmetric')