numpy 基礎01
阿新 • • 發佈:2018-11-22
import numpy as np from numpy import newaxis #方法:help(np.info(np.add)) 檢視方法 # print(help(np.info(np.add))) # reshape() #維度(x,y) x--維度 y--元素個數 #arange 相當於range(start,stop,step,dtype) a=np.arange(15).reshape(3,5) print(np.reshape(a,(5,3))) #ndim--軸數(預設0,1,2。。。。) print(a.ndim) #shape--陣列大小(x,y) print(a.shape) #size--元素總個數 print(a.size) #itemsize--每個元素所佔記憶體空間大小,以位元組為單位 print(a.itemsize) #dtype--元素型別,int64,float64,object,complex... print(a.dtype) # print(type(a)) # <class 'numpy.ndarray'> print("====================") b=np.array([1,2,3,4,5,6]) #reshape() #維度(x,y) x--維度 y--元素個數,可以修改維度 print(b.reshape(2,3)) #dtype 可以指導型別 c=np.array([1,2,3,4,5,6],dtype=float) #如果沒有dtype指定,array裡面必須為統一型別 d=np.array([1,2,3,4,5,6.2]) #dtype=object 可以為任意型別 e=np.array([1,2,3,4,5,6,7.3,'124'],dtype=object) print("====================") #zeros((3,4)) -- 建立充滿為0的陣列, f=np.zeros((3,4)) #np.ones((3,4))-- 建立充滿為1的陣列, f1=np.ones((3,4),dtype=int) # np.set_printoptions(threshold=np.nan) -- 強制列印整列 # np.set_printoptions(threshold=np.nan) print(np.arange(10000).reshape(10,1000)) print(np.arange(10,100,2)) print("===============") g = np.arange(20,60,10) g1=np.arange(1,5) #兩個陣列元素個數一一對應相乘 g2=g1*g print(g1) print(g) #max --最大值 ; min --最小值 ; sum--求和 ;mean-- 平均值 # var--標準差 :公式:1/n[(X0-Xmean)^2+(X1-Xmean)^2+....(X0-Xmean)^2] 例如1/4*【(1.25)^2+(0.5)^2+(0.5)^2+(1.25)^2] #add --求和 ; subtract --相減 ; multiply--相乘 ;divide--相除; print(g2.max()) print(g2.min()) print(g2.sum()) print(g2.mean()) print(g1.var()) print(np.add(g,g1)) print(np.subtract(g,g1)) print(np.multiply(g,g1)) print(np.divide(g,g1)) print("=================================================") #三角函式:np.sin(num*np.pi/180) sin=y/r cos=x/r tan=y/x ary=np.array([0,30,45,60,90]) print(np.sin(ary*np.pi/180)) print(np.cos(ary*np.pi/180)) print(np.tan(ary*np.pi/180)) print("=================================================") #矩陣乘法dot或@:A=[[a,b],[c,d] #B=[[x,y],[u,v]] #[email protected]=[[a*x+b*u,a*y+b*v] # [c*x+d*u,c*y+d*v]] A=np.array([[1,2],[3,4]]) B=np.array([[1,2],[3,4]]) print(np.dot(A,B)) # [[ 7 10] # [15 22]] A=np.array([[3,4],[3,2]]) B=np.array([[3,2,3],[5,2,3]]) print([email protected]) # [[29 14 21] # [19 10 15]] print("=================================================") #linspace --等差數列 從0-3 取5個數 b=np.linspace(0,3,4) print(b) d=np.exp(b*1j) print(d) #[ 1. +0.j 0.54030231+0.84147098j -0.41614684+0.90929743j -0.9899925 +0.14112001j] #sqrt -- 算數平方根 print(np.sqrt(b)) #std--矩陣標準差 :求矩陣標準差的算術平方根 axis=1 計算計算每一列的標準差 print(np.std([1,2,3,4])) print(np.sqrt(1.25)) print(np.std([[1,2,3,4],[3,4,5,6]],axis=0)) # print(help(np.info(np.std))) h=np.arange(20).reshape(4,5) for i in h: print(i) #floor--忽略小數點後邊的數 i=(10*np.random.random((3,4))) print(i) print(np.floor(i)) #ravel--轉化為一維 i1=(i.ravel()) print(i1.shape) print("====================") # a=np.arange(24).reshape(6,4) print(a) b=np.arange(24,48).reshape(6,4) print(b) # vstack-- 縱向合併 hstack--橫向合併 print(np.vstack((a,b))) c=np.hstack((a,b)) print(c[:newaxis]) #column_stack-- 相當於hstack--橫向合併 print(np.column_stack((a,b))) #concatenate --合併 axis=1 橫向 ; axis=0 縱向 print(np.concatenate((a,b),axis=1)) #此函式不會保留MaskedArray輸入的遮蔽 a=np.ma.arange(10) print("===========split=======================") #array_split --將陣列拆分成多個子陣列,;hsplit--橫向拆分 ; vsplit--縱向拆分 ;dsplit a=np.arange(12) b=np.arange(16.0).reshape(2, 2, 4) print(np.dsplit(b,2)) print(np.array_split(a,5)) print(np.hsplit(a,6)) b=np.arange(16).reshape(4,4) c=np.vsplit(b,4) for c1 in c : print(c1) print("===========dstack=======================") #dstack --按順序進行多維組合; stack--沿新軸加入一系列陣列; hstack--橫向進行組合; vstack--縱向進行多維度組合 a=np.array((1,2,3,4,5,6)) b=np.array((7,8,9,10,11,12)) print(a) print(b) print(np.dstack((a,b))) print(np.stack((a,b))) print(np.hstack((a,b))) print(np.vstack((a,b)))