np.pad()

函数原型

np.pad(array, pad_width, mode, **kwargs)

***参数说明***
***array——表示需要填充的数组;
***pad_width——表示每个轴(axis)边缘需要填充的数值数目。参数输入方式为:((before_1, after_1), … (before_N, after_N)),其中(before_1, after_1)表示第1轴两边缘分别填充before_1个和after_1个数值。取值为:{sequence, array_like, int}
***mode——表示填充的方式(取值:str字符串或用户提供的函数),总共有11种填充模式;
******‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0
      ‘edge’——表示用边缘值填充
      ‘linear_ramp’——表示用边缘递减的方式填充
      ‘maximum’——表示最大值填充
      ‘mean’——表示均值填充
      ‘median’——表示中位数填充
      ‘minimum’——表示最小值填充
      ‘reflect’——表示对称填充
      ‘symmetric’——表示对称填充
      ‘wrap’——表示用原数组后面的值填充前面,前面的值填充后面

填充实例

A = np.arange(95,99).reshape(2,2)    #原始输入数组

array([[95, 96],
       [97, 98]])

实例1

#在数组A的边缘填充constant_values指定的数值
#(3,2)表示在A的第[0]轴填充(二维数组中,0轴表示行),即在0轴前面填充3个宽度的0,比如数组A中的95,96两个元素前面各填充了3个0;在后面填充2个0,比如数组A中的97,98两个元素后面各填充了2个0
#(2,3)表示在A的第[1]轴填充(二维数组中,1轴表示列),即在1轴前面填充2个宽度的0,后面填充3个宽度的0
np.pad(A,((3,2),(2,3)),'constant',constant_values = (0,0))  #constant_values表示填充值,且(before,after)的填充值等于(0,0)


array([[ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0, 95, 96,  0,  0,  0],
       [ 0,  0, 97, 98,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0,  0,  0,  0]])

说明:np.pad(A,((3,2),(2,3)),'constant',constant_values = (0,0))

  • (3,2)表示上面填充3行,下面填充2行
  • (2,3)表示左边填充2列,右边填充3列
  • constant_values = (0,0)第一次第二次都用0填充

实例2

#填充时,从前面轴,往后面轴依次填充
np.pad(A,((3,2),(2,3)),'constant',constant_values = (-2,2))   #填充值,前面填充改为-2,后面填充改为2


array([[-2, -2, -2, -2,  2,  2,  2],
       [-2, -2, -2, -2,  2,  2,  2],
       [-2, -2, -2, -2,  2,  2,  2],
       [-2, -2, 95, 96,  2,  2,  2],
       [-2, -2, 97, 98,  2,  2,  2],
       [-2, -2,  2,  2,  2,  2,  2],
       [-2, -2,  2,  2,  2,  2,  2]])

说明:np.pad(A,((3,2),(2,3)),'constant',constant_values = (-2,2))

  • constant_values = (-2,2)第一次用-2填充,第二次用2填充
  • 行:第一次上面3行用-2填充,第二次下面2行用2填充
  • 列:第一次左边2列用-2填充,第二次右边3列用2填充

实例3

np.pad(A,((3,2),(2,3)),'constant',constant_values = ((0,0),(1,2)))    #0轴和1轴分别填充不同的值,先填充0轴,后填充1轴,存在1轴填充覆盖0轴填充的情形


array([[ 1,  1,  0,  0,  2,  2,  2],
       [ 1,  1,  0,  0,  2,  2,  2],
       [ 1,  1,  0,  0,  2,  2,  2],
       [ 1,  1, 95, 96,  2,  2,  2],
       [ 1,  1, 97, 98,  2,  2,  2],
       [ 1,  1,  0,  0,  2,  2,  2],
       [ 1,  1,  0,  0,  2,  2,  2]])

说明:np.pad(A,((3,2),(2,3)),'constant',constant_values = ((0,0),(1,2)))

  • 行:第一次上面3行用0填充,第二次下面2行用0填充
  • 列:第一次左边2列用1填充,第二次右边3列用2填充
posted @ 2025-06-10 11:39  狐狸胡兔  阅读(20)  评论(0)    收藏  举报