python中numpy.pad()函数的使用

更新时间:2023-07-19 22:53:34 阅读: 评论:0

python中numpy.pad()函数的使⽤
  在卷积神经⽹络中,为了避免因为卷积运算导致输出图像缩⼩和图像边缘信息丢失,常常采⽤图像边缘填充技术,即在图像四周边缘填充0,使得卷积运算后图像⼤⼩不会缩⼩,同时也不会丢失边缘和⾓落的信息。在Python的numpy库中,常常采⽤numpy.pad()进⾏填充操作。
  numpy.pad() 常⽤于深度学习中的数据预处理,可以将numpy数组按指定的⽅法填充成指定的形状。
语法结构
ndarray = numpy.pad(array, pad_width, mode,**kwargs)
其中,array表⽰需要填充的数组;
英语国际音标学习   pad_width表⽰在各维度的各个⽅向上想要填补的长度。参数输⼊⽅式为: ((before_1, after_1), … (before_N, after_N));
   mode表⽰填充的⽅式,总共有11种填充模式;
   **kwargs表⽰填充的值,与pad_width相对应。
填充模式
  constant表⽰连续填充相同的值,每个维度可以分别指定填充值,constant_values=(x, y)时前⾯⽤x填充,后⾯⽤y填充,缺省值填充0;
  edge表⽰⽤边缘值填充;
  linear_ramp表⽰⽤边缘递减的⽅式填充;
  maximum表⽰最⼤值填充;
  mean表⽰均值填充;
  median表⽰中位数填充;
  minimum表⽰最⼩值填充;
  reflect表⽰对称填充;
  symmetric表⽰对称填充;
  wrap表⽰⽤原数组后⾯的值填充前⾯,前⾯的值填充后⾯。
  examples1: ⽤不同的填充模式对⼀维数组进⾏填充:
美白小窍门import numpy as np
arr1D = np.array([1,1,2,2,3,3,4,4])
'''不同的填充模式'''
学美留学print('constant:  '+str(np.pad(arr1D,(1,2),'constant')))
百万瓦特
print('edge:  '+str(np.pad(arr1D,(1,2),'edge')))
print('linear_ramp:  '+str(np.pad(arr1D,(1,2),'linear_ramp')))
print('maximum:  '+str(np.pad(arr1D,(1,2),'maximum')))
print('mean:  '+str(np.pad(arr1D,(1,2),'mean')))
print('median:  '+str(np.pad(arr1D,(1,2),'median')))
print('minimum:  '+str(np.pad(arr1D,(1,2),'minimum')))
print('reflect:  '+str(np.pad(arr1D,(1,2),'reflect')))
print('symmetric:  '+str(np.pad(arr1D,(1,2),'symmetric')))
print('wrap:  '+str(np.pad(arr1D,(1,2),'wrap')))
  不同模式填充结果:
  constant: [0 1 1 2 2 3 3 4 4 0 0]
  edge: [1 1 1 2 2 3 3 4 4 4 4]
  linear_ramp: [0 1 1 2 2 3 3 4 4 2 0]
  maximum: [4 1 1 2 2 3 3 4 4 4 4]
  mean: [2 1 1 2 2 3 3 4 4 2 2]
  median: [2 1 1 2 2 3 3 4 4 2 2]
  minimum: [1 1 1 2 2 3 3 4 4 1 1]
  reflect: [1 1 1 2 2 3 3 4 4 4 3]
  symmetric: [1 1 1 2 2 3 3 4 4 4 4]
  wrap: [4 1 1 2 2 3 3 4 4 1 1]
  examples2: ⽤不同的填充模式对多维数组进⾏填充:
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')))
  constant填充模式的结果如下(其他模式的运⾏结果省略):
  constant:
  [[[0 0 0 0 0 0 0 0 0 0]
    [0 0 1 1 2 2 3 3 0 0]
    [0 0 1 1 2 2 3 3 0 0]
    [0 0 1 1 2 2 3 3 0 0]
    [0 0 0 0 0 0 0 0 0 0]]
  [[0 0 0 0 0 0 0 0 0 0]chlamydia
    [0 0 0 1 2 3 4 5 0 0]
    [0 0 0 1 2 3 4 5 0 0]
    [0 0 0 1 2 3 4 5 0 0]
    [0 0 0 0 0 0 0 0 0 0]]
  [[0 0 0 0 0 0 0 0 0 0]
    [0 0 4 4 5 5 6 6 0 0]
    [0 0 4 4 5 5 6 6 0 0]
    [0 0 4 4 5 5 6 6 0 0]
    [0 0 0 0 0 0 0 0 0 0]]]
  examples3: 使⽤constant填充模式对⼀维数组填充。
import numpy as np
arr1D = np.array([1,2,3])
ndarray=np.pad(arr1D,(1,2),'constant', constant_values=(0,2))
come clean# (1,2)表⽰在⼀维数组array前⾯填充1位,最后⾯填充2位
#  constant_values=(0,2) 表⽰前⾯填充0,后⾯填充2
print("arr1D=",arr1D)
print("ndarray=",ndarray)
  运⾏结果:
  arr1D= [1 2 3]
  ndarray= [0 1 2 3 2 2]
blind
  examples4: 使⽤constant填充模式对多维数组填充。
import numpy as np
arr2D = np.array([[1,1],[2,2]])
"""
rage((1,1),(2,2))表⽰在⼆维数组array第⼀维(此处便是⾏)前⾯填充1⾏,最后⾯填充1⾏;冤情
在⼆维数组array第⼆维(此处便是列)前⾯填充2列,最后⾯填充2列constant_values=(0,3) 表⽰第⼀维填充0,第⼆维填充3
"""
ndarray=np.pad(arr2D,((1,1),(2,2)),'constant', constant_values=(0,3))
print("arr2D=",arr2D)
print("ndarray=",ndarray)
  运⾏结果:
  arr2D= [[1 1]
      [2 2]]
  ndarray= [[0 0 0 0 3 3]leather
          [0 0 1 1 3 3]
          [0 0 2 2 3 3]
          [0 0 3 3 3 3]]

本文发布于:2023-07-19 22:53:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/182622.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:填充   图像   模式   边缘   数组   学习   卷积   运算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图