數(shù)據(jù)科學(xué)基礎(chǔ) 課件 第2章-Python矩陣計算課件_第1頁
數(shù)據(jù)科學(xué)基礎(chǔ) 課件 第2章-Python矩陣計算課件_第2頁
數(shù)據(jù)科學(xué)基礎(chǔ) 課件 第2章-Python矩陣計算課件_第3頁
數(shù)據(jù)科學(xué)基礎(chǔ) 課件 第2章-Python矩陣計算課件_第4頁
數(shù)據(jù)科學(xué)基礎(chǔ) 課件 第2章-Python矩陣計算課件_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Numpy矩陣計算同濟(jì)大學(xué)計算機(jī)基礎(chǔ)教研室矩陣類庫numpy矩陣運算,使用numpy庫程序中引用numpyimportnumpyasnp讀文件與矩陣讀文件到矩陣Z=np.loadtxt("c:\\python33\S-093790.txt")Z就是一個矩陣規(guī)定:默認(rèn)數(shù)據(jù)文件中,列間以空格或tab間隔查資料:如果數(shù)據(jù)文件中,列間以逗號間隔,程序語句怎么寫?例子:讀文本文件S-093790.txt,查看其結(jié)果矩陣類庫numpy的方法Zeros,生成元素為0的矩陣B=np.zeros((2,3))#給定元組,指定矩陣大小B的值:array([[0.,0.,0.],

[0.,0.,0.]])矩陣類庫numpy的方法ones生成元素為1的矩陣x=np.ones((2,3))x的值array([[1.,1.,1.],

[1.,1.,1.]])矩陣類庫numpy的方法eye生成單位矩陣X=np.eye(5)生成一個5*5的單位陣隨機(jī)數(shù)矩陣np.random.random((n,m))生成n行m列,0~1之間的隨機(jī)小數(shù)x=np.random.random((4,4))隨機(jī)數(shù)矩陣np.random.standard_normal((n,m))生成n行m列,服從正太分布的隨機(jī)數(shù)矩陣如x=np.random.standard_normal((4,4))矩陣的格式化文件保存np.savetxt(fname,X,fmt='格式串',delimiter='',newline='\r\n')fname為文件名,如c:\abc.txtX輸出矩陣fmt為數(shù)據(jù)格式,如%10.3fdelimiter是列分隔符newline為換行符,一般使用\r\n。下面語句將矩陣y保存到磁盤文件111.txt中。數(shù)據(jù)格式為寬度5位,保留2位小數(shù)。np.savetxt("d:\\111.txt",y,fmt='%5.2f',delimiter='\t',newline='\r\n')矩陣的格式化文件保存例子importnumpyasnpx=np.random.standard_normal((4,4))np.savetxt("d:\\111.txt",x,fmt='%5.2f',delimiter='\t',newline='\r\n')偷懶寫法np.savetxt("d:\\111.txt",x,fmt='%5.2f')#默認(rèn)空格間隔,換行矩陣的格式化文件保存importnumpyasnpx=np.random.standard_normal((4,4))np.savetxt("d:\\111.txt",x,fmt='%5.2f',delimiter='\t',newline='\r\n')偷懶寫法np.savetxt("d:\\111.txt",x,fmt='%5.2f')#默認(rèn)空格間隔,換行再讀入文件d:\111.txt,語句怎么寫?矩陣轉(zhuǎn)置轉(zhuǎn)置:B=A.Timportnumpyasnpx=np.random.standard_normal((4,4))np.savetxt("d:\\111.txt",x,fmt='%5.2f',delimiter='\t',newline='\r\n')xt=x.Tnp.savetxt("d:\\222.txt",xt,fmt='%5.2f',delimiter='\t',newline='\r\n')原矩陣矩陣轉(zhuǎn)置矩陣+,-,*,/運算矩陣的+,-運算:

C=A+B

或D=A-B乘法:C=A*B規(guī)則:尺寸相同的矩陣,對應(yīng)元素進(jìn)行計算除法:C=A/B矩陣dot運算—線性代數(shù)乘法規(guī)則:左矩陣的i行,與右矩陣的j列:對應(yīng)元素相乘加和左矩陣的列數(shù)=右矩陣的行數(shù)點乘:C=A@B例子學(xué)生成績表S學(xué)號姓名數(shù)學(xué)物理化學(xué)111張雪809192222薛靜788799333王城909187444劉動787191555徐堅強(qiáng)679087專家評價權(quán)重L專家專家1專家2專家3數(shù)學(xué)權(quán)重0.50.50.6物理權(quán)重0.30.250.2化學(xué)權(quán)重0.20.250.2請利用矩陣相乘,計算每個研究生考生的評價A=?A=S@L矩陣求逆importnumpyasnpx=np.random.standard_normal((4,4))xinv=np.linalg.inv(x)I=x@xinv#驗證結(jié)果是單位陣逆:B=np.linalg.inv(A)矩陣乘方運算矩陣每個元素的乘方,形成新矩陣A=np.array([[1,-1,0],[2,0,-2.0]])B=A**2array([[1.,1.,0.],[4.,0.,4.]])矩陣類庫numpy的方法矩陣的行和列數(shù)size=A.shapesize[0]是行數(shù),size[1]是列數(shù)

一維矩陣的行和列數(shù),怎么求?

A=np.ones(3)答案:沒有列數(shù)

矩陣合并的需求對y=a0+a1x,測量(xi,yi),帶入方程,可有方程組a0+a1x1=y1a0+a1x2=y2….a0+a1x12=y12

寫成矩陣形式(一個樣本一行)矩陣類庫numpy的方法兩矩陣合并:np.c_[]列合并X=np.array([[1,2,3.0],[4.0,5,6]])b=np.ones(2)#改成更好的語句?X.shape[0]c=np.c_[b,X]#列合并,b在X的左側(cè)print(c)array([[1.,1.,2.,3.],[1.,4.,5.,6.]])矩陣類庫numpy的方法np.r_[]是行合并A=np.ones((3,3))B=np.zeros((2,3))np.r_[A,B]array([[1.,1.,1.],[1.,1.,1.],[1.,1.,1.],[0.,0.,0.],[0.,0.,0.]])np.r_[]是行合并A=np.ones(3)因為1維向量被看作是豎起來的,所以無法與矩陣np.r_[]B=np.zeros((2,3))np.r_[A,B]報錯,數(shù)據(jù)維度不一致矩陣分片矩陣A的兩維分片。行和列,分別用格式:開始:結(jié)束:步長,兩個維度間用逗號間隔開始省略取0,結(jié)束省略取到最大,步長省略取1如

A[0:1,2:-3]行列逗號矩陣分片x=np.random.standard_normal((4,4))xarray([[1.098,-0.594,-1.353,1.181],

[-0.686,-0.794,1.686,-0.676],

[0.363,0.419,0.561,1.086],

[0.774,-2.578,-0.436,0.837]])y=x[:,:2]第一個:,代表所有行,第二個:,后跟數(shù)字2,取前兩列array([[1.098,-0.594],[-0.686,-0.794],[0.363,0.419],[0.774,-2.578]])分片時,每個維度start:end維度間,逗號Start忽略,取0;end略,最后矩陣分片x=np.random.standard_normal((4,4))z=x[:2,2:]zarray([[-1.353,1.181],[1.686,-0.676]])首先生成一個4*4矩陣x語句z=x[:2,2:]則選擇前2行、最后2兩列組成z矩陣z=x[:,1],如果某維度只有一個數(shù)字,只取該下標(biāo)對應(yīng)的行或列任務(wù)--矩陣分片x=np.random.standard_normal((4,4))xarray([[1.098,-0.594,-1.353,1.181],

[-0.686,-0.794,1.686,-0.676],

[0.363,0.419,0.561,1.086],

[0.774,-2.578,-0.436,0.837]])請寫出將上述紅色區(qū)塊內(nèi)容挖出來的分片方案矩陣分片—指定索引選擇importnumpyasnpa=np.random.standard_normal((9,4))print(a)xSel=[0,5,7]#行的索引號ySel=[1,3]#列的索引號b=a[xSel]#選擇指定行b=b[:,ySel]#再選擇指定列print(b)b=a[xSel,ySel]#不允許同時選擇矩陣分片應(yīng)用如數(shù)學(xué)建模中經(jīng)常使用一種方法,交叉驗證,矩陣A預(yù)測建模預(yù)測建模建模預(yù)測建模建模預(yù)測建模建模預(yù)測建模根據(jù)給定份數(shù)k、決定每份的樣本數(shù)n,再用循環(huán)決定每份的具體樣本第i次循環(huán)的預(yù)測樣本:A[i*n:(i+1)*n]第i次循環(huán)的建模樣本:前:A[0:i*n]后:A[(i+1)*n:]矩陣分片應(yīng)用--crossvalidationimportnumpyasnpk=int(input('份數(shù)'))X=np.random.standard_normal((9,3))#設(shè)模型有9個樣本,3個變量Y=np.random.standard_normal((9,1))#9個樣本,1個函數(shù)n=len(A)//k#例如每份k個樣本;如何確定實際份數(shù)?課堂作業(yè):請編程,用循環(huán),把每次交叉驗證數(shù)據(jù)分割的訓(xùn)練集和測試集形成矩陣并打印輸出例子計算一組混合物光譜的樣本協(xié)方差矩陣設(shè)一組混合物樣本光譜矩陣X則其協(xié)方差矩陣為XTXimportnumpyasnpx=np.arange(300,600,10)y1=0.8*np.exp(-((x-380)/40)**2)y2=0.8*np.exp(-((x-480)/40)**2)pure=np.c_[y1,y2]#按列存放pure=pure.T#轉(zhuǎn)置,每行一種物質(zhì)C=np.array([[0.12,0.81],[0.75,0.24],[0.5,0.5]])#假設(shè)的濃度矩陣M=C@pure#混合物的光譜......后續(xù)計算M.T@M就是協(xié)方差矩陣矩陣函數(shù)如sum(元素和)、std(標(biāo)準(zhǔn)偏差),mean(均值)默認(rèn)情況下,這些函數(shù)對矩陣所有元素進(jìn)行由于矩陣具有行、列屬性,因此,通過特別指定,這些函數(shù)也可以按行或列操作。指定該操作的參數(shù)為axis,當(dāng)axis=0時,求列方向,axis=1時,求行方向>>>x=np.array([[1,2,3],[5,6,7]])>>>x.sum()24>>>x.sum(axis=0)array([6,8,10])>>>x.sum(axis=1)array([6,18])axis=0矩陣函數(shù)例子小麥的每個顆粒有24個特征描述(橢圓形的長徑、短徑,紅、黃、綠、飽和度),現(xiàn)在測量了400粒小麥,求每個特征(列)的均值和方差importnumpyasnpx=np.loadtxt(r'E:\teach\python\data\wheat_train_PCA_X.txt')后續(xù)怎么寫?隨堂練習(xí)定義一個10,3的正態(tài)分布的矩陣,np.random.stand...計算其每列的均值和偏差矩陣與標(biāo)量的運算矩陣與標(biāo)量運算,+、-、*、/,在每個元素上進(jìn)行zz=np.eye(3)array([[1.,0.,0.],[0.,1.,0.],[0.,0.,1.]])zz+1array([[2.,1.,1.],[1.,2.,1.],[1.,1.,2.]])矩陣與向量的+-*/擴(kuò)展+、-、*、/,指定運算在列上進(jìn)行importnumpyasnpX=np.random.random((5,3))#矩陣3列y=np.array([1,2,1])#向量有3個元素z=X+yprint(z)121X矩陣yy的不同的元素作用于X的不同列矩陣與向量的+-*/擴(kuò)展numpy支持矩陣與向量的加、減、乘、除運算,指定運算在列上進(jìn)行importnumpyasnpX=np.ones((5,3))z=np.array([1,2,3])Y=X/zimportnumpyasnpX=np.ones((5,3))z=np.array([1,2,3,4,5])Y=X/z理解該離子失敗的原因矩陣與向量的+-*/擴(kuò)展+、-、*、/,指定運算在列上進(jìn)行avg=X.mean(axis=0)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論