1. 程式人生 > >java基礎學python(五)----------numpy

java基礎學python(五)----------numpy

NumPy(底層用c完成的)

是一個開源的Python科學計算基礎庫

一個強大的N維陣列物件ndarray

廣播函式功能

整合C/C++/Fortran程式碼的工具

線性代數、傅立葉變換、隨機數生成等功能

NumPySciPy,Pandas等資料處理或科學計算庫的基礎


ndarray:N維陣列物件

陣列物件可以去掉元素間運算所需的迴圈,使一維向量更像單個數據

設定專門的陣列物件,經過優化,可以提升這類應用的運算速度

一般要求所有元素型別相同

ndarray的維度資料量不同時,預設資料型別時object,它把每個維度看做了一個物件

維度的數量不同時無法發揮

numpy的優勢

建立ndarray陣列:

python中的列表,元組等型別建立ndarray陣列;

使用numpy中函式建立ndarray陣列,如:arangeoneszeros

從位元組流中建立ndarray陣列

從檔案中讀取特定格式來建立ndarray陣列

陣列可以使用索引和切片

陣列運算的各種方法


CSV檔案

save

np.savetxt(frame , array , fmt=‘%.18e’ ,delimiter=None)

Frame:檔案、字串或產生器,可以是.gz.bz2的壓縮檔案

array:存入檔案的陣列

Fmt

:寫入檔案的格式,例如:%d %.2f %.18e

Delimiter:分割字串,預設是任何空格



load

np.loadtxt(frame , dtype=np.float , delimiter=None , unpack=False)

frame:檔案、字串或產生器,可以是.gz.bz2的壓縮檔案

dtype:資料型別,可選

delimiter:分割字串,預設是任何空格

unpack:如果True,讀入屬性將分別寫入不同變數

侷限性中:只能有效儲存一維和二維陣列

多維陣列

np.tofile(frame , sep=‘’ , format=‘%s’)

寫入檔案(維度丟失)

np.fromfile(frame , dtype=float , count=-1 , sep=‘’) 讀檔案(可以格式化維度)


numpy的便捷檔案存取

np.save(fname , array)np.savez(fname , array)

fname:檔名、以.npy為副檔名,壓縮副檔名為.npz

array:陣列變數

二進位制儲存:第一行用正常編碼寫了檔案的格式

np.load(fname)

fname:檔名、以.npy為副檔名,壓縮副檔名為.npz



隨機數函式np.random

rand(d0…dn)均勻分佈

randn(d0…dn)正態分佈

randint(low ,high ,[ shape,shape])

seed(s)隨機數種子


shuffle(a)陣列a根據第0軸進行隨機排列(其實就是行位置變換),改變陣列a  

permutation(a)與以上相同,不改變陣列a

choice(a ,size ,replace , p)從一維陣列a中以概率p抽取元素,形成size形狀新陣列

        replace表示是否可以重用元素,預設為false


uniform(low ,high ,size)產生均勻分佈的陣列,low起始值,high結束值,size形狀

normal(loc , scale , size)產生正態分佈的陣列,loc均值,scale標準差,size形狀

poisson(lam ,size)產生柏鬆分佈的陣列,lam隨機事件發生率,size形狀


統計函式

sum(a ,axis=None)   axis=0,就是求二維陣列每一列的和;

axis=1,就是求二維陣列每一行的和

axis指的就是維度

mean(a ,axis=None)求期望

average(a , axis=None , weights=None)加權平均值,若不給定weights將所有元素當作等

    權重

std(a ,axis=None)標準差

var(a ,axis=None)方差

min(a) max(a)

argmin(a) argmax(a)計算最大值最小值的降一維後下標(其實就是轉換成一維陣列後

的下標)

unravel_index(index , shape)根據shape將一維下標index轉換成多維下標(轉換成多維數

組後的下標)

ptp(a)計算陣列a中元素最大值與最小值的差

median(a)計算陣列a中元素的中位數(中值)



梯度函式

梯度:連續值之間的變化率,即斜率

np.gradient(f)計算陣列f中元素的梯度,當f為多維時,返回每個維度梯度





PIL(python image library):具有強大影象處理能力的第三方庫

from PIL import Image

from bumpy as np

Im = np.array(Image.open(path))

print(im.shape,im.dtype)

輸出結果:(669,1012,3) uint8


#影象的變換

a = [255 ,255 ,255 ] - im

b = Image.fromarray(b.astype(‘uint8’))

b.save(path)


convert(‘L’)#灰度變換(二維陣列)