Python金融數(shù)據(jù)分析與挖掘(微課版) 課件 第2章 科學(xué)計(jì)算包Numpy_第1頁
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件 第2章 科學(xué)計(jì)算包Numpy_第2頁
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件 第2章 科學(xué)計(jì)算包Numpy_第3頁
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件 第2章 科學(xué)計(jì)算包Numpy_第4頁
Python金融數(shù)據(jù)分析與挖掘(微課版) 課件 第2章 科學(xué)計(jì)算包Numpy_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章

科學(xué)計(jì)算包Numpy數(shù)組創(chuàng)建、數(shù)組尺寸與重排數(shù)組運(yùn)算與數(shù)學(xué)函數(shù)數(shù)組切片、連接、存取、展平、排序與搜索Numpy簡介第2章

Numpy是Python用于科學(xué)計(jì)算的基礎(chǔ)包,也是大量Python數(shù)學(xué)和科學(xué)計(jì)算包的基礎(chǔ)。Numpy的核心基礎(chǔ)是ndarray(N-dimensionalarray,N維數(shù)組),即由數(shù)據(jù)類型相同的元素組成的N維數(shù)組。使用該包,需要按模塊的形式導(dǎo)入,即:importnumpy,大多情況下是importnumpyasnp,即簡稱np。利用array()函數(shù)創(chuàng)建數(shù)組第2章?;赼rray()函數(shù),可以將列表、元組、嵌套列表、嵌套元組等數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為數(shù)組d1=[1,2,3,4,0.1,7]#列表d2=(1,2,3,4,2.3)#元組d3=[[1,2,3,4],[5,6,7,8]]#嵌套列表,元素為列表d4=[(1,2,3,4),(5,6,7,8)]#嵌套列表,元素為元組d5=((1,2,3,4),(5,6,7,8))#嵌套元組importnumpyasnpd11=np.array(d1)d21=np.array(d2)d31=np.array(d3)d41=np.array(d4)d51=np.array(d5)deld1,d2,d3,d4,d5利用內(nèi)置函數(shù)創(chuàng)建數(shù)組第2章importnumpyasnpz1=np.ones((3,3))#創(chuàng)建3行3列元素全為1的數(shù)組z2=np.zeros((3,4))#創(chuàng)建3行4列元素全為0的數(shù)組z3=np.arange(10)#創(chuàng)建默認(rèn)初始值為0,默認(rèn)步長為1,末值為9的一維數(shù)組z4=np.arange(2,10)#創(chuàng)建默認(rèn)初始值為2,默認(rèn)步長為1,末值為9的一維數(shù)組z5=np.arange(2,10,2)#創(chuàng)建默認(rèn)初始值為2,步長為2,末值為9的一維數(shù)組數(shù)組尺寸與重排第2章d1=[1,2,3,4,0.1,7]#列表d3=[[1,2,3,4],[5,6,7,8]]#嵌套列表,元素為列表importnumpyasnpd11=np.array(d1)#將d1列表轉(zhuǎn)換為一維數(shù)組,結(jié)果賦值給變量d11d31=np.array(d3)#將d3嵌套列表轉(zhuǎn)換為二維數(shù)組,結(jié)果賦值給變量d31deld1,d3#刪除d1,d3s11=d11.shape

#返回一維數(shù)組d11的尺寸,結(jié)果賦值給變量s11s31=d31.shape#返回二維數(shù)組d31的尺寸,結(jié)果賦值給變量s31r=np.array(range(9))#一維數(shù)組r1=r.reshape((3,3))#重排為3行3列第2章數(shù)組運(yùn)算importnumpyasnpA=np.array([[1,2],[3,4]])#定義二維數(shù)組AB=np.array([[5,6],[7,8]])#定義二維數(shù)組BC1=A-B#A、B兩個(gè)數(shù)組元素之間相減,結(jié)果賦給變量C1C2=A+B#A、B兩個(gè)數(shù)組元素之間相加,結(jié)果賦給變量C2C3=A*B#A、B兩個(gè)數(shù)組元素之間相乘,結(jié)果賦給變量C3C4=A/B#A、B兩個(gè)數(shù)組元素之間相除,結(jié)果賦給變量C4C5=A/3#A數(shù)組所有元素除以3,結(jié)果賦給變量C5C6=1/A#1除以A數(shù)組所有元素,結(jié)果賦給變量C6C7=A**2#A數(shù)組所有元素取平方,結(jié)果賦給變量C7C8=np.array([1,2,3,3.1,4.5,6,7,8,9])#定義數(shù)組C8C9=(C8-min(C8))/(max(C8)-min(C8))#C8中的元素做極差化處理,結(jié)果賦給變量C9第2章數(shù)學(xué)函數(shù)D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定義數(shù)組D#數(shù)學(xué)運(yùn)算E1=np.sqrt(D)#數(shù)組D中所有元素取平方根,結(jié)果賦給變量E1E2=np.abs([1,-2,-100])#取絕對值E3=np.cos([1,2,3])#取cos值E4=np.sin(D)#取sin值E5=np.exp(D)#取指數(shù)函數(shù)值第2章常用組切片方法假設(shè)D為待訪問或切片的數(shù)據(jù)變量,則訪問或者切片的數(shù)據(jù)=D[①,②]。其中①為對D的行下標(biāo)控制,②為對D的列下標(biāo)控制。為了更靈活地操作數(shù)據(jù),取所有的行或者列,可以用“:”來代替實(shí)現(xiàn)。同時(shí),行控制還可以通過邏輯列表來實(shí)現(xiàn)。importnumpyasnpD=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定義數(shù)組DD12=D[1,2]#訪問D中行為1,列為2的數(shù)據(jù),注意下標(biāo)是從0開始的。D1=D[:,[1,3]]#訪問D中第1、3列數(shù)據(jù)D2=D[[1,3],:]#訪問D中第1、3行數(shù)據(jù)Dt1=D[D[:,0]>5,:]#取D中滿足第0列大于5的所有列數(shù)據(jù),本質(zhì)上行控制為邏輯列表TF=[True,False,False,True]#取D中第0、3行的所有列數(shù)據(jù),本質(zhì)上行控制為邏輯列表,取邏輯值為真的行Dt3=D[TF,:]第2章利用ix_()函數(shù)進(jìn)行數(shù)組切片通過ix_()函數(shù)構(gòu)造行、列下標(biāo)索引器,實(shí)現(xiàn)數(shù)組的切片操作。importnumpyasnpD=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])#定義數(shù)組DD3=D[np.ix_([1,2],[1,3])]#提取D中行數(shù)為1、2,列數(shù)為1、3的所有元素D4=D[np.ix_(np.arange(2),[1,3])]#提取D中行數(shù)為0、1,列數(shù)為1、3的所有元素D6=D[np.ix_(D[:,1]<11,[1,2])]#提取D中第1列小于11得到的邏輯數(shù)組作為行索引,列數(shù)為1、2的所有元素D7=D[np.ix_(D[:,1]<11,[2])]#提取D中第1列小于11得到的邏輯數(shù)組作為行索引,列數(shù)為2的所有元素TF=[True,False,False,True]D8=D[np.ix_(TF,[2])]#提取TF=[True,False,False,True]邏輯列表為行索引,列數(shù)為2的所有元素D9=D[np.ix_(TF,[1,3])]#提取TF=[True,False,False,True]邏輯列表為行索引,列數(shù)為1,,3的所有元素第2章數(shù)組連接importnumpyasnpA=np.array([[1,2],[3,4]])#定義二維數(shù)組AB=np.array([[5,6],[7,8]])#定義二維數(shù)組BC_s=np.hstack((A,B))#水平連接要求行數(shù)相同C_v=np.vstack((A,B))#垂直連接要求列數(shù)相同第2章數(shù)組存取importnumpyasnpA=np.array([[1,2],[3,4]])#定義二維數(shù)組AB=np.array([[5,6],[7,8]])#定義二維數(shù)組BC_s=np.hstack((A,B))#水平連接np.save('data',C_s)第2章數(shù)組存取importnumpyasnpC_s=np.load(‘data.npy’)

數(shù)組展平

前面介紹了reshape函數(shù)將一維數(shù)組形態(tài)變換為二維數(shù)組,事實(shí)上也可以將二維數(shù)組形態(tài)展平變換為一維數(shù)組,通過ravel()函數(shù)即可實(shí)現(xiàn)。importnumpyasnparr=np.arange(12).reshape(3,4)arr1=arr.ravel()第2章

數(shù)組排序

通過sort函數(shù),可以對數(shù)組元素值按從小到大進(jìn)行直接排序importnumpyasnparr=np.array([5,2,3,3,1,9,8,6,7])arr1=np.sort(arr)第2章

數(shù)組搜索

通過argmax和argmin函數(shù),可以返回待搜索數(shù)組最大值和最小值元素的索引值,如果存在多個(gè)最大值或最小值,則返回第一次出現(xiàn)的索引。對于二維數(shù)組而已,可以通過設(shè)置axis=0或1返回各列或者各行最大值或最小值索引。需要注意的是,索引從0開始。importnumpyasnparr=np.array([5,2,3,3,1,1,9,8,6,7,8,8])arr1=arr.reshape(3,4)maxindex=np.argmax(arr)minindex=np.argmin(arr)maxindex1=np.argmax(arr1,axis=0)#返回各列最大值索引minindex1=np.argmin(arr1,axis=1)

#返回各行最小值索引第2章第2章

科學(xué)計(jì)算包Numpy矩陣創(chuàng)建、矩陣基本屬性矩陣基本運(yùn)算線性代數(shù)運(yùn)算

矩陣創(chuàng)建Numpy的matrix是繼承自NumPy的二維數(shù)組對象,不僅擁有二維數(shù)組的屬性、方法與函數(shù),還擁有諸多特有的屬性與方法。同時(shí),Numpy中的matrix和線性代數(shù)中的矩陣概念幾乎完全相同,同樣含有轉(zhuǎn)置矩陣,共軛矩陣,逆矩陣等概念。利用mat、matrix創(chuàng)建Numpy矩陣Numpy中可使用mat、matrix或bmat函數(shù)來創(chuàng)建矩陣importnumpyasnpmat1=np.mat("123;456;789")mat2=np.matrix([[1,2,3],[4,5,6],[7,8,9]])

第2章

矩陣創(chuàng)建

利用bmat創(chuàng)建矩陣在矩陣的日常使用過程中,將小矩陣組合成大矩陣是一種頻率極高的操作。在Numpy中可以使用bmat分塊矩陣函數(shù)實(shí)現(xiàn)。importnumpyasnparr1=np.eye(3)arr2=3*arr1mat=np.bmat(“arr1arr2;arr1arr2”)

第2章

矩陣基本屬性(轉(zhuǎn)置、共軛、逆矩陣)

importnumpyasnpmat=np.matrix(np.arange(4).reshape(2,2))mT=mat.TmH=mat.HmI=mat.I矩陣基本屬性第2章

importnumpyasnpmat1=np.mat("123;456;789")mat2=mat1*3mat3=mat1+mat2mat4=mat1-mat2mat5=mat1*mat2mat6=np.multiply(mat1,mat2)#點(diǎn)乘矩陣基本運(yùn)算第2章

線性代數(shù)運(yùn)算線性代數(shù)是數(shù)學(xué)的一個(gè)重要分支。Numpy包含numpy.linalg模塊,提供線性代數(shù)所需的功能,如計(jì)算逆矩陣、求解線性方程組、求特征值、奇異值分解以及求解行列式等。numpy.linalg模塊中的一些常用函數(shù)表函數(shù)名稱說明dot矩陣相乘inv求逆矩陣solve求解線性方程組

eig求特征值和特征向量eigvals求特征值svd計(jì)算奇異值分解det求行列式線性代數(shù)運(yùn)算第2章

計(jì)算逆矩陣使用numpy.linalg模塊中的inv函數(shù)可以計(jì)算逆矩陣importnumpyasnpmat=np.mat('111;123;136')inverse=np.linalg.inv(mat)A=np.dot(mat,inverse)線性代數(shù)運(yùn)算第2章

求解線性方程組numpy.linalg模塊中的solve函數(shù)可以求解線性方程組importnumpyasnpA=np.mat("1,-1,1;2,1,0;2,1,-1")b=np.array([4,3,-1])x=np.l

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論