Python中numpy.pad()函數(shù)的使用詳解
numpy.pad()函數(shù)的使用
在卷積神經(jīng)網(wǎng)絡(luò)中,為了避免因?yàn)榫矸e運(yùn)算導(dǎo)致輸出圖像縮小和圖像邊緣信息丟失,常常采用圖像邊緣填充技術(shù),即在圖像四周邊緣填充0,使得卷積運(yùn)算后圖像大小不會(huì)縮小,同時(shí)也不會(huì)丟失邊緣和角落的信息。在Python的numpy庫(kù)中,常常采用numpy.pad()進(jìn)行填充操作。
numpy.pad() 常用于深度學(xué)習(xí)中的數(shù)據(jù)預(yù)處理,可以將numpy數(shù)組按指定的方法填充成指定的形狀。
語法結(jié)構(gòu)
ndarray = numpy.pad(array, pad_width, mode, **kwargs)
- array表示需要填充的數(shù)組;
- pad_width表示在各維度的各個(gè)方向上想要填補(bǔ)的長(zhǎng)度。參數(shù)輸入方式為: ((before_1, after_1), … (before_N, after_N));
- mode表示填充的方式,總共有11種填充模式;
- **kwargs表示填充的值,與pad_width相對(duì)應(yīng)。
填充模式
- constant表示連續(xù)填充相同的值,每個(gè)維度可以分別指定填充值,constant_values=(x, y)時(shí)前面用x填充,后面用y填充,缺省值填充0;
- edge表示用邊緣值填充;
- linear_ramp表示用邊緣遞減的方式填充;
- maximum表示最大值填充;
- mean表示均值填充;
- median表示中位數(shù)填充;
- minimum表示最小值填充;
- reflect表示對(duì)稱填充;
- symmetric表示對(duì)稱填充;
- wrap表示用原數(shù)組后面的值填充前面,前面的值填充后面。
示例
examples1: 用不同的填充模式對(duì)一維數(shù)組進(jìn)行填充:
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')))
不同模式填充結(jié)果:
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: 用不同的填充模式對(duì)多維數(shù)組進(jìn)行填充:
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填充模式的結(jié)果如下(其他模式的運(yùn)行結(jié)果省略):
[[[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]
[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填充模式對(duì)一維數(shù)組填充。
import numpy as np arr1D = np.array([1, 2, 3]) ndarray=np.pad(arr1D,(1,2),'constant', constant_values=(0,2)) # (1,2)表示在一維數(shù)組array前面填充1位,最后面填充2位 # constant_values=(0,2) 表示前面填充0,后面填充2 print("arr1D=",arr1D) print("ndarray=",ndarray)
運(yùn)行結(jié)果:
arr1D= [1 2 3]
ndarray= [0 1 2 3 2 2]
examples4: 使用constant填充模式對(duì)多維數(shù)組填充。
import numpy as np arr2D = np.array([[1, 1],[2,2]]) """ ((1,1),(2,2))表示在二維數(shù)組array第一維(此處便是行)前面填充1行,最后面填充1行; 在二維數(shù)組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)
運(yùn)行結(jié)果:
arr2D= [[1 1]
[2 2]]
ndarray= [[0 0 0 0 3 3]
[0 0 1 1 3 3]
[0 0 2 2 3 3]
[0 0 3 3 3 3]]
到此這篇關(guān)于Python中numpy.pad()函數(shù)的使用詳解的文章就介紹到這了,更多相關(guān)numpy.pad()函數(shù)的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch 數(shù)據(jù)處理:定義自己的數(shù)據(jù)集合實(shí)例
今天小編就為大家分享一篇pytorch 數(shù)據(jù)處理:定義自己的數(shù)據(jù)集合實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12python mysql斷開重連的實(shí)現(xiàn)方法
這篇文章主要介紹了python mysql斷開重連的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07在Python中畫圖(基于Jupyter notebook的魔法函數(shù))
這篇文章主要介紹了在Python中畫圖(基于Jupyter notebook的魔法函數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10python實(shí)現(xiàn)讀取excel文件中所有sheet操作示例
這篇文章主要介紹了python實(shí)現(xiàn)讀取excel文件中所有sheet操作,涉及Python基于openpyxl模塊的Excel文件讀取、遍歷相關(guān)操作技巧,需要的朋友可以參考下2019-08-08Python的Scrapy框架中的CrawlSpider介紹和使用
這篇文章主要介紹了Python的Scrapy框架中的CrawlSpider介紹和使用,CrawlSpider其實(shí)是Spider的一個(gè)子類,除了繼承到Spider的特性和功能外,還派生除了其自己獨(dú)有的更加強(qiáng)大的特性和功能,其中最顯著的功能就是"LinkExtractors鏈接提取器",需要的朋友可以參考下2023-12-12python 網(wǎng)絡(luò)爬蟲初級(jí)實(shí)現(xiàn)代碼
這篇文章主要介紹了python 網(wǎng)絡(luò)爬蟲初級(jí)實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-02-02Python+Tkinter實(shí)現(xiàn)經(jīng)典井字棋小游戲
Tkinter是內(nèi)置到Python安裝包中的,只要安裝好Python之后就能import?Tkinter,而且IDLE也是用Tkinter編寫而成的。本文將用Tkinter編寫經(jīng)典的井字棋小游戲,需要的可以參考一下2022-03-03