多维数组np.pad函数的理解
原函数是:
np.pad(array, ((x1, y1), (x2, y2), (x3, y3)), 'constant')
x1,y1)
意思是着在a这个三维矩阵中,整个大矩阵中首尾分别添加x1,y1个和a中各个矩阵形状一样的0矩阵.效果如下图所示:
原三维数组
arr3D = np.array([[[1, 1, 2, 2, 3, 4],
[1, 1, 2, 2, 3, 4],
[1, 1, 2, 2, 3, 4]],
[[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]],
[[1, 1, 2, 2, 3, 4],
[1, 1, 2, 2, 3, 4],
[1, 1, 2, 2, 3, 4]]])
对(x1, y1)进行操作,其他设置为0。即:
print('constant: \n' + str(np.pad(arr3D, ((0, 0), (0, 0), (0, 0)), 'constant')))
当(x1, y1)=(0,0)时,大矩阵不改变。
当(x1, y1)=(1,1)时,即是向大矩阵中首尾分别添加1个和array中各个矩阵形状一样的0矩阵.结果如下:
(x2,y2) 代表的是:向大矩阵的各个矩阵组上面填充x2行0元素,下面填充y2行0元素,在上面(x1=0,y1=0)的基础上输出下面的代码:
print('constant: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (0, 0)), 'constant')))
输出得到:
(x3,y3)表示的是对大矩阵的各个矩阵右边填充x3列0元素,左边填充y3列0元素。在上面的基础上有以下代码输出:
print('constant: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'constant')))
输出结果是: