主要使用numpy中的pad实现数据填充
Array:待填充的数组
pad_width:Number of values padded to the edges of each axis.在当前的数据上下左右要填充的数据的个数(填充的形状)
mode :不同的填充方法
一维数组填充
import numpy as np
arr1D = np.array([1, 2, 3, 4, 5, 6])
'''不同的填充方法'''
print 'constant: ' + str(np.pad(arr1D, (2, 3), 'constant'))
连续一样的值填充,后面也可以指定常量的数值 constant_values(a,b)前面用a填充后面用b填充,雀圣参数00000.
print 'edge: ' + str(np.pad(arr1D, (2, 3), 'edge'))
使用两侧的数据对一位数组填充,使用边缘补充
print 'linear_ramp: ' + str(np.pad(arr1D, (2, 3), 'linear_ramp'))
使用边缘递减的填充方式
print 'maximum: ' + str(np.pad(arr1D, (2, 3), 'maximum'))
使用数组中的最大值补充
print 'mean: ' + str(np.pad(arr1D, (2, 3), 'mean'))
使用数组的均值补充
print 'median: ' + str(np.pad(arr1D, (2, 3), 'median'))
使用中位数补充
print 'minimum: ' + str(np.pad(arr1D, (2, 3), 'minimum'))
使用最小值补充
print 'reflect: ' + str(np.pad(arr1D, (2, 3), 'reflect'))
对称补充,关于边缘对称,就是以边为对称轴
print 'symmetric: ' + str(np.pad(arr1D, (2, 3), 'symmetric'))
对称补充,关于边缘外的空气对称,以原图的最外一层边和填充的最内一层边的中间为对称轴
print 'wrap: ' + str(np.pad(arr1D, (2, 3), 'wrap'))
使用原数组后面的值填充前面,前面的值填充后面
也可以有其他自定义的填充方法???咋自定义?
多维数组填充
import numpy as np
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]]])
'''对于多维数组'''
print 'constant: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'constant'))
print 'edge: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'edge'))
print 'linear_ramp: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'linear_ramp'))
print 'maximum: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'maximum'))
print 'mean: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'mean'))
print 'median: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'median'))
print 'minimum: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'minimum'))
print 'reflect: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'reflect'))
print 'symmetric: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'symmetric'))
print 'wrap: \n' + str(np.pad(arr3D, ((0, 0), (1, 1), (2, 2)), 'wrap'))
第二个参数部分的第一对元素是表示在arr3D得前后各加0个层,第二对元素是在数组的上下各加1个行,第三对元素表示在数组的左右各加2个列。
最大值填充顶上的一圈是原来的值(剩下的都是)