边缘填充方法的实现

主要使用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个列。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最大值填充顶上的一圈是原来的值(剩下的都是)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值