- n維數(shù)組對象ndarray
- 兩部分組成--數(shù)組內(nèi)容和數(shù)組屬性(數(shù)組類型和數(shù)組維度)
- 定義一個數(shù)組方法:a=numpy.array((1,1,1))或者a=numpy.array([1,1,1])生成一個ndarray的數(shù)組a忌堂,ndarray在程序中的別名是array
- ndarray對象的屬性
- a.ndim 秩薯酝、維度的數(shù)量
- a.shape ndarray對象的尺度,對于矩陣,n行m列
- a.size 對象元素個數(shù)。n*m
- dtype 元素類型
- a.itemsize 對象中每個元素的大小表牢,以字節(jié)為單位
- ndarray的元素類型
- bool 布爾
- intc 與C中int一致
- intp 用于索引的整數(shù)
- int8 字節(jié)長度的整數(shù)
- int16 16位長度的整數(shù)
- int32 32位長度的整數(shù)
- int64 64位
- unit8 8位無符號整數(shù)
- unit16
- unit32
- unit64
- float16
- float32
- float64
- complex64 復(fù)數(shù)
- complex128
- ndarray數(shù)組創(chuàng)建
- 字節(jié)流(raw bytes)中創(chuàng)建數(shù)組
- 從文件中讀取特定格式蝠检,創(chuàng)建數(shù)組
- python中列表辣苏、元組創(chuàng)建ndarray數(shù)組
x= np.array(list/tuple)或者指定類型x=np.array(list/tuple, dtype=np.float32)及穗,不給出類型摧茴,自動判斷 - Numpy中函數(shù)創(chuàng)建ndarray數(shù)組,如:array拥坛、ones蓬蝶、zeros
- np.arange(n):從0到n-1的數(shù)組
- np.ones(shape):全為1尘分,例如np.ones((3,6))
- np.zeros(shape):全為0
- np.full(shape,val):根據(jù)shape生成一個數(shù)組猜惋,每個元素都是val
- np.eye(n):n*n的單位數(shù)矩陣
- np..ones_like(a):根據(jù)a的形狀生成一個全1的數(shù)組
- np.zeros_like(a):根據(jù)a生成全0數(shù)組
- np.full_like(a)
- np.linspace(1,10培愁,4):根據(jù)起止數(shù)據(jù)等間距地填充數(shù)據(jù)著摔,形成數(shù)組,生成數(shù)組(1,4,7,10)定续,若是np.linspace(1,10,4,endpoint=False)谍咆,生成5個禾锤,排除10,(1,3.25,5.5,7.75)
- ndarray的數(shù)組操作
- np.concatenate():將兩個或多個數(shù)組合并成一個新的數(shù)組
- .reshape(shape):例如a.reshape((3,8)) 得到的數(shù)組不改變a摹察,生成新的數(shù)組
- .resize(shape):例如a.resize((3,8))改變了原數(shù)組的行列
- .swapaxes(ax1,ax2):將數(shù)組n個維度中兩個維度進行調(diào)換
- .flatten():對數(shù)組進行降維恩掷,返回折疊后的一維數(shù)組,原數(shù)組不變
- .astype(new_type):類型轉(zhuǎn)化供嚎。例如:a=np.ones((2,3,4),dtype=np.int)黄娘,b=a.astype(np.float)
- 數(shù)組向列表轉(zhuǎn)化:b=a.tolist(),python基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu):列表
- 一維數(shù)組索引:a[2],從0開始遞增或者從-1開始遞減
多維數(shù)組:a[1,2,3]:位置信息,或者a[-1,-2,-3] - 3元素切片:a[1:4:2]:含義:起始編號:終止編號:步長
多元素組切片:a[:,1,-3]克滴,或者a[:逼争,1:3,:]
-
數(shù)組運算
- 數(shù)組與標量運算:作用于數(shù)組的每一個元素a = a / a.mean()
- 一元函數(shù):np.abs(x)劝赔、np.fabs(x)誓焦、np.sqrt(x)、np.square(x)着帽、np.log(x)杂伟、np.log10(x)、np.log2(x)仍翰、np.ceil(x)(不超過元素的整數(shù)值)稿壁、np.floor(x)(小于這個元素的最大整數(shù)值)、np.rint(x)(四舍五入)歉备、np.modf(x)(小數(shù)部分和整數(shù)部分)傅是、np.cos(x)、np.cosh(x)蕾羊、np.exp(x)喧笔、np.sign(x)
- 二元函數(shù):加減乘除乘方、np.maximum(x,y) np.fmax()
np.mod(x,y) np.copysign(x,y)(將數(shù)組y各元素的符號復(fù)制給數(shù)組x對應(yīng)元素) 布爾型運算
-
adarray數(shù)組與csv文件寫入與讀出:
注意:csv文件只能有效存取一維數(shù)組和二維數(shù)組- 寫入到csv文件中
np.savetxt(frame,array,fmt='%.18e',delimiter=None)
frame:文件龟再、字符串或產(chǎn)生器书闸,可以是.gz或者.bz2的壓縮文件,文件名
array:存入文件的數(shù)組
fmt:寫入文件的格式:例如:%d %.2f %.18e
delimiter:分割字符串
例如:
a = np.arange(100).reshape(5,20)
np.savetxt('a.csv',a,fmt='%d',delimiter=',')
文件保存在當前文件目錄下利凑,我的是在C盤的用戶目錄下浆劲,可以更改 - 從csv文件中讀出
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
frame:文件名,可以是壓縮文件.gz或者.bz2
dtype:數(shù)據(jù)類型
delimiter:分割字符串哀澈,默認位任何空格
unpack:true牌借,讀入屬性將分別寫入不同變量
- 寫入到csv文件中
-
多維數(shù)組的存取
注意:使用的時候要知道存入文件時數(shù)組的維度和元素類型- 寫到文件中:
a.tofile(frame,sep='',format='%s')
frame:文件、字符串
sep:數(shù)據(jù)分割字符串割按、如果為空串膨报,寫入文件為二進制。
format:寫入數(shù)據(jù)的格式
例如:
a.tofile('b.dat',sep=',',format='%d') //此時文件中為一串有逗號分割的數(shù)字,無分組信息
- 從文件中讀文件
np.fromfile(frame,dtype=float,count=-1,sep='')
count:讀入元素的個數(shù)现柠,-1表示讀入整個文件
sep:數(shù)據(jù)分割字符串院领、如果為空串,讀取的文件為二進制够吩。
例如:
c=np.fromfile('b.dat',dtype=np.int,sep=',') //此時c為一個一維數(shù)組
可以使用reshape變?yōu)槎嗑S數(shù)組比然。
- 寫到文件中:
便捷的文件存取
np.save(fname,array) //fname中以.npy為擴展名
np.savez(fname,array) //fname中以.npz為壓縮擴展名
np.load(fname)-
隨機數(shù)函數(shù)--random子庫
- rand(d0,d1,..dn) 根據(jù)d0-dn創(chuàng)建隨機數(shù)數(shù)組,浮點數(shù)[0,1),均勻分布
- randn(d0,d1,..dn) 根據(jù)d0-dn創(chuàng)建隨機數(shù)數(shù)組周循,標準正態(tài)分布
- randint(low,high,shape):根據(jù)shape創(chuàng)建隨機整數(shù)或整數(shù)數(shù)組谈秫,范圍是[low,high)
- seed(s) 隨機數(shù)種子,s是給定的種子值
a=np.random.randn(3,4,5) //生成3維矩陣鱼鼓,維數(shù)分別是3拟烫,4,5 b=np.random.randint(100,200,(3,4))
- shuffle(a) 根據(jù)數(shù)組a的第一軸進行隨機排序迄本,改變數(shù)組a
- permutation(a) 根據(jù)數(shù)組a的第一軸進行隨機排序硕淑,不改變數(shù)組a
- choice(a,size,replace,p) 從一維數(shù)組a中以概率p抽取元素,形成size形狀新數(shù)組嘉赎,replace表示是否可以重用元素置媳,默認為true
- uniform(low,high,size) 產(chǎn)生具有均勻分布的數(shù)組,low起始值公条,high結(jié)束值拇囊,size形狀
- normal(loc,scale,size) 產(chǎn)生具有正態(tài)分布的數(shù)組,loc均值靶橱,scale標準差寥袭,size形狀
- poisson(lam,size) 產(chǎn)生具有泊松分布的數(shù)組,lam隨機事件發(fā)生率关霸,size形狀
-
統(tǒng)計函數(shù)
- sum(a,axis=None) :給定軸axis計算和传黄,axis整數(shù)或者元組
- mean(a,axis=None):給定軸axis計算期望
- average(a,axis=None,Weight=None) 給定軸axis計算數(shù)組a計算相關(guān)元素的加權(quán)平均值
- std(a,axis=None) 計算數(shù)組a相關(guān)元素的標準差
- var(a,axis=None) 計算數(shù)組a相關(guān)元素的方差
- min(a)
- argmin(a) 計算數(shù)組a中元素最小值、最大值降一維后下標
- unravel_index(index,shape) 根據(jù)shape將一維下標index轉(zhuǎn)換成多維下標
- ptp(a) 計算數(shù)組a中元素最大值和最小值的差
- median(a) 計算數(shù)組a中元素的中位數(shù)(中值)
梯度函數(shù)--及斜率
np.gradient(a):返回元素的梯度队寇,當f為多維時膘掰,返回每個維度梯度圖像的數(shù)組表示
圖像:RGB色彩表示
PIL庫:具有強大圖像處理能力的第三方庫
使用:from PIL import Image
Image是PIL庫中代表一個圖像的類
im=np.array(Image.open("path+fileName"))
print(im.shape,im.dtype)
Image.open("E://Desktop//0.jpg").convert('L')
將圖像轉(zhuǎn)化為灰度圖