Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))_第1頁
Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))_第2頁
Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))_第3頁
Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))_第4頁
Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第1頁。第四章數(shù)據(jù)類型和結(jié)構(gòu)(二)Python金融大數(shù)據(jù)分析Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第2頁。本章按照如下主題組織:NumPy數(shù)據(jù)結(jié)構(gòu)接下來的一個(gè)小節(jié)專門介紹NumPynarray類的特性和功能,并闡述這個(gè)類在科學(xué)和金融應(yīng)用上的好處代碼向量化正如最后一個(gè)小結(jié)所闡述的一樣.由于NumPy的數(shù)組類向量化代碼很容易實(shí)現(xiàn).我們可以得到更加緊湊、性能更好的代碼Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第3頁。NumPy數(shù)據(jù)結(jié)構(gòu)

Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第4頁。NumPy數(shù)據(jù)結(jié)構(gòu)用Python列表形成數(shù)組簡單的列表已經(jīng)可以視為一維數(shù)組:

二維和更高維的數(shù)組很容易通過嵌套列表對(duì)象構(gòu)造:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第5頁。NumPy數(shù)據(jù)結(jié)構(gòu)用Python列表形成數(shù)組我們也可以很輕松地通過簡單的索引選擇行,通過雙重索引訪問單個(gè)元素(但是,選擇整列不容易):嵌套可以推進(jìn)一步,獲得更通用的結(jié)構(gòu):Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第6頁。NumPy數(shù)據(jù)結(jié)構(gòu)用Python列表形成數(shù)組注意,按照剛才介紹的方式組合對(duì)象通常使用原始對(duì)象的引用指針。這在實(shí)踐中有何意義?我們來看看如下的操作:現(xiàn)在,改變v對(duì)象的第一個(gè)元素,看看m對(duì)象上發(fā)生了什么:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第7頁。NumPy數(shù)據(jù)結(jié)構(gòu)用Python列表形成數(shù)組使用copy模塊的deepcopy函數(shù)可以避免這一現(xiàn)象:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第8頁。NumPy數(shù)據(jù)結(jié)構(gòu)常規(guī)NumPy數(shù)組顯然,用列表對(duì)象組成數(shù)組結(jié)構(gòu)是可行的。

但是這實(shí)際上并不方便。某種專用類能夠真正地為處理數(shù)組類型結(jié)構(gòu)帶來好處。這一專用類就是numpy.ndarray,它的具體目標(biāo)就是方便高效(也就是高性能)地處理n維數(shù)組同樣。

最好是用示例來說明這種類實(shí)例的處理方式:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第9頁。NumPy數(shù)據(jù)結(jié)構(gòu)numpy.ndarray類的主要特征是多種內(nèi)建方法例如:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第10頁。NumPy數(shù)據(jù)結(jié)構(gòu)另一個(gè)主要特征是ndarray對(duì)象上定義的(向量化)數(shù)學(xué)運(yùn)算:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第11頁。NumPy數(shù)據(jù)結(jié)構(gòu)一維以上數(shù)組可以無縫過渡,迄今為止介紹的功能都可以更通用的方式延續(xù)。特別是,所有維度內(nèi)部有一致的索引系統(tǒng):Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第12頁。NumPy數(shù)據(jù)結(jié)構(gòu)和基于列表對(duì)象的數(shù)組構(gòu)造方法相比,numpy.ndarray類明確地知道數(shù)組的軸,從一個(gè)矩陣上選擇行或者列本質(zhì)上都是一樣的:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第13頁。NumPy數(shù)據(jù)結(jié)構(gòu)初始化(實(shí)例化)numpy.ndarray對(duì)象有許多種方式。前面已經(jīng)介紹了一種——通過np.array。但是,這種方法假設(shè)所有數(shù)組元素已經(jīng)可用相反,有人可能喜歡先實(shí)例化numpy.ndarray對(duì)象,然后再用代碼執(zhí)行期間生成的結(jié)果填充數(shù)組。為此,我們可以使用如下函數(shù):Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第14頁。NumPy數(shù)據(jù)結(jié)構(gòu)利用這些函數(shù),我們提供了如下信息:組成整數(shù)(int),整數(shù)序列或者應(yīng)用另一個(gè)numpy.ndarraydtype(可選)numpy.dtype——用于numpy.ndarray的Numpy特定數(shù)據(jù)類型order(順序,可選)在內(nèi)存中存儲(chǔ)元素的順序:C指和C語言相似(即行優(yōu)先),F(xiàn)指和Fortran類似(列優(yōu)先)現(xiàn)在,和基于列表的方法相比,NumPy用Numpy.ndarray類構(gòu)造數(shù)組方式的特殊之處已經(jīng)很明顯:數(shù)組的組成/長度/大小在任何維度內(nèi)都是同質(zhì)的。整個(gè)數(shù)組只允許一種數(shù)據(jù)類型(numpy.dtype)。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第15頁。NumPy數(shù)據(jù)結(jié)構(gòu)表4-4提供了numpy.dtype對(duì)象的概述(即NumPy可以使用的基本數(shù)據(jù)類型)。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第16頁。NumPy數(shù)據(jù)結(jié)構(gòu)做個(gè)簡單的練習(xí),假定我們要生成一個(gè)5000x5000個(gè)元素組成的矩陣/數(shù)組,填入標(biāo)準(zhǔn)正態(tài)分布的(偽)隨機(jī)數(shù),然后計(jì)算所有元素的總和。純Python方法Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第17頁。NumPy數(shù)據(jù)結(jié)構(gòu)做個(gè)簡單的練習(xí),假定我們要生成一個(gè)5000x5000個(gè)元素組成的矩陣/數(shù)組,填入標(biāo)準(zhǔn)正態(tài)分布的(偽)隨機(jī)數(shù),然后計(jì)算所有元素的總和。Numpy方法Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第18頁。NumPy數(shù)據(jù)結(jié)構(gòu)做個(gè)簡單的練習(xí),假定我們要生成一個(gè)5000x5000個(gè)元素組成的矩陣/數(shù)組,填入標(biāo)準(zhǔn)正態(tài)分布的(偽)隨機(jī)數(shù),然后計(jì)算所有元素的總和。我們觀察到如下情況:語法盡管我們使用了許多方法來壓縮純Python代碼,NumPy版本仍然更為緊湊、更易于理解。性能和純Python的對(duì)應(yīng)操作相比,numpy.ndarray對(duì)象的生成大約快20倍,總和的計(jì)算大約快100倍。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第19頁。NumPy數(shù)據(jù)結(jié)構(gòu)numpy.ndarray類的專門化帶來了許多真正有價(jià)值的好處。但是,過分狹窄的專門化措施可能給大部分基于數(shù)組的算法和應(yīng)用程序造成過大的負(fù)擔(dān)。因此,NumPy提供結(jié)構(gòu)數(shù)組,允許我們至少在每列上使用不同的NumPy數(shù)據(jù)類型。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第20頁。NumPy數(shù)據(jù)結(jié)構(gòu)在某種意義上,這種構(gòu)造方法很接近于SQL數(shù)據(jù)庫中表的初始化。我們使用列名和列數(shù)據(jù)類型,以及某些附加信息(例如,每個(gè)字符串對(duì)象的最大字符數(shù))?,F(xiàn)在,各個(gè)列可以簡單地用它們的名稱訪問:分別選擇特定行和記錄,結(jié)果,對(duì)象的行為類似字典對(duì)象,可以通過鍵碼檢索值:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第21頁。NumPy數(shù)據(jù)結(jié)構(gòu)總而言之,結(jié)構(gòu)數(shù)組是常規(guī)numpy.ndarray對(duì)象類型的推廣,其中在每列的數(shù)據(jù)類型必須相等,就像SQL數(shù)據(jù)庫中的表一樣。結(jié)構(gòu)數(shù)組的優(yōu)勢之一是某列中的元素可以是另一個(gè)多維對(duì)象。不一定要遵循基本的NumPy數(shù)據(jù)類型。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第22頁。代碼向量化代碼的向量化是獲得執(zhí)行速度更快、更緊湊代碼的一種策略?;舅悸肥恰耙淮巍痹谝粋€(gè)復(fù)雜對(duì)象上進(jìn)行操作,或者向其應(yīng)用某個(gè)函數(shù),而不是通過在對(duì)象的單個(gè)元素上循環(huán)來進(jìn)行。在Python中,函數(shù)式編程工具map、filter和reduce提供了向量化的手段。在某種意義上,NumPy的向量化深植于其核心之中。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第23頁。代碼向量化基本向量化我們可以將兩個(gè)NumPy數(shù)組按元素相加:

Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第24頁。代碼向量化基本向量化NumPy還支持所謂的廣播,可以在一個(gè)操作內(nèi)組合不同組成的對(duì)象在這個(gè)例子中,r對(duì)象按元素乘以2,然后按元素加3——3被廣播或者延伸到r對(duì)象的組成之中。在某種程度上,這種方法也適合于不同組成的數(shù)組:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第25頁。代碼向量化基本向量化上述代碼將大小為3的一維數(shù)組廣播到(4,3)數(shù)組中。對(duì)于不同大小(例如4)的一維數(shù)組,相同的代碼無法正常工作:不過,將r對(duì)象轉(zhuǎn)置,這一操作再次變?yōu)橛行?。在下面的代碼中.transpose方法將ndarray對(duì)象的組成從(4.3)轉(zhuǎn)換為組成為(3,4)的的同類型對(duì)象:Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第26頁。代碼向量化基本向量化一般的原則是,自定義的Python函數(shù)也可以使用numpy.ndarrays,如果實(shí)現(xiàn)允許,數(shù)組可以像整數(shù)或者浮點(diǎn)數(shù)對(duì)象一樣用于函數(shù)。Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第27頁。代碼向量化基本向量化使用數(shù)組時(shí),程序員必須正確調(diào)用對(duì)應(yīng)對(duì)象上的函數(shù)。例如,來自Python標(biāo)準(zhǔn)模塊math的sin函數(shù)不能用于NumPy數(shù)組:

該函數(shù)設(shè)計(jì)用于處理浮點(diǎn)對(duì)象——即單個(gè)數(shù)值而非數(shù)組。NumPy提供了對(duì)應(yīng)的函數(shù),即所謂的適用函數(shù)(ufuncs):Python金融大數(shù)據(jù)分析-第四章(數(shù)據(jù)類型和結(jié)構(gòu))全文共29頁,當(dāng)前為第28頁。結(jié)語Python結(jié)合Numpy,提供了一組豐富靈活的數(shù)據(jù)結(jié)構(gòu),從金融的角度看,下面這些類型是最重要的:基本數(shù)據(jù)類型在金融中整數(shù)、浮點(diǎn)數(shù)和字符串提供了原子數(shù)據(jù)類型。標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)元組、列表、字典和集合類在金融中有許

溫馨提示

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

評(píng)論

0/150

提交評(píng)論