最近看到pad函数,很多参考资料对pad函数在三维矩阵应用时,对于里面的参数解释不明白,于是自己总结一下
···
a = np.array([[[1, 2],
[2, 3]],
[[2, 4],
[5, 6]],
[[7, 8],
[9, 10]]])
···
定义这么个三维矩阵,使用pad方法,
···
np.pad(a, ((x1, y1), (x2, y2), (x3, y3)), 'constant')
···
首先解释 (a, ((x1, y1), (x2, y2), (x3, y3)), ‘constant’) 中的a自然代表的想要填充的矩阵,‘constant’,代表各个矩阵填充一样的元素
重点解释 (x1, y1), (x2, y2), (x3, y3)
(x1,y1) 解释:
(x1,y1)代表着在a这个三维矩阵中,整个大矩阵中首尾分别添加x1,y1个和a中各个矩阵形状一样的0矩阵 (为什么是0,因为如果不注明,默认填充是0),即在矩阵组a中,在开头添加x1个[[0,0],[0,0]]矩阵,后面添加y1个[[0,0],[0,0]]矩阵,比如,运行下面的程序
np.pad(a, ((1, 1), (0, 0), (0, 0)), 'constant'))
打印结果
···
[[[ 0 0]
[ 0 0]],
[[ 1 2]
[ 2 3]],
[[ 2 4]
[ 5 6]],
[[ 7 8]
[ 9 10]],
[[ 0 0]
[ 0 0]]]
···
如图所示,在在矩阵组中,开头增加了1(x1)个0矩阵,末尾填了1(y1)个0矩阵
(x2,y2) 解释:
(x2,y2)代表这向各个矩阵组上边填充x2行0元素,下边填充y2行0元素, (为什么是0,因为如果不注明,默认填充是0)
np.pad(a, ((0, 0), (1, 2), (0, 0)), 'constant'))
···
[[[ 0 0]
[ 1 2]
[ 2 3]
[ 0 0]
[ 0 0]],
[[ 0 0]
[ 2 4]
[ 5 6]
[ 0 0]
[ 0 0]],
[[ 0 0]
[ 7 8]
[ 9 10]
[ 0 0]
[ 0 0]]]
···
如图所示,各个矩阵上面填充了1行(x2)0元素,下面填了2行(y2)0元素
(x3,y3) 解释:
(x3,y3)代表这向各个矩阵组右边填充x3列0元素,左边填充y3列0元素, (为什么是0,因为如果不注明,默认填充是0)
np.pad(a, ((0, 0), (0, 0), (2, 3)), 'constant')
···
[[[ 0 0 1 2 0 0 0]
[ 0 0 2 3 0 0 0]],
[[ 0 0 2 4 0 0 0]
[ 0 0 5 6 0 0 0]],
[[ 0 0 7 8 0 0 0]
[ 0 0 9 10 0 0 0]]]
···
如图所示,各个矩阵右面填充了2列(x3)0元素,左面填了3列(y3)0元素