1. 程式人生 > >numpy 基礎01

numpy 基礎01

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)))