Python財經(jīng)應用-編程基礎、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.1數(shù)組的創(chuàng)建與訪問_第1頁
Python財經(jīng)應用-編程基礎、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.1數(shù)組的創(chuàng)建與訪問_第2頁
Python財經(jīng)應用-編程基礎、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.1數(shù)組的創(chuàng)建與訪問_第3頁
Python財經(jīng)應用-編程基礎、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.1數(shù)組的創(chuàng)建與訪問_第4頁
Python財經(jīng)應用-編程基礎、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.1數(shù)組的創(chuàng)建與訪問_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python財經(jīng)應用:編程基礎、數(shù)據(jù)分析與可視化第五章NumPy數(shù)值計算中國農(nóng)業(yè)大學李輝NumPy

數(shù)值計算在財經(jīng)數(shù)據(jù)分析領域,NumPy是Python核心科學計算庫。它提供高效數(shù)組操作及數(shù)學運算能力,是處理大規(guī)模金融數(shù)據(jù)的基礎框架。本章節(jié)系統(tǒng)介紹

NumPy數(shù)組操作與應用,包括創(chuàng)建、訪問、運算及操作等內容。詳細講解數(shù)組創(chuàng)建與訪問方法,如多維數(shù)組初始化、屬性查詢及索引切片,為金融數(shù)據(jù)結構化存儲提供支持。在運算部分,探討轉置、算術運算等應用,像在資產(chǎn)組合權重等計算中很關鍵,點積運算在投資組合預期收益計算時效率高。數(shù)組操作章節(jié)聚焦排序與合并算法應用,通過案例展示其對交易數(shù)據(jù)和多市場數(shù)據(jù)整合的優(yōu)化作用。掌握這些技術能提升財經(jīng)分析師處理大規(guī)模時間序列數(shù)據(jù)和構建量化模型的能力。目錄01數(shù)組的創(chuàng)建與訪問02數(shù)組的運算03數(shù)組的操作目錄01數(shù)組的創(chuàng)建與訪問02數(shù)組的運算03數(shù)組的操作5.1

數(shù)組的創(chuàng)建與訪問第五章NumPy數(shù)值計算在使用NumPy之前,必須先安裝NumPy模塊,使用pip工具,安裝命令為:pipinstallnumpy。使用NumPy庫前必須先執(zhí)行下列導入操作:fromnumpyimport*,或者采用importnumpyasnp語句,表示導入NumPy庫,并用np作為別名,后文不再贅述??梢酝ㄟ^np.__version__查看NumPy的版本信息。NumPy的數(shù)據(jù)結構是N維(多維)的數(shù)組對象,稱為ndarray(或array)對象。數(shù)組對象可以存儲相同類型、以多種形式組織的數(shù)據(jù),組成數(shù)組的各數(shù)據(jù)稱為數(shù)組的元素。NumPy提供了兩種基本的對象:ndarray(n-dimensionalarrayobject):存儲單一數(shù)據(jù)類型的多維數(shù)組。ufunc(universalfunctionobject):一種能夠對數(shù)組進行處理的函數(shù)。數(shù)組的創(chuàng)建與訪問數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組NumPy提供了多種創(chuàng)建數(shù)組的方法,可以創(chuàng)建多種形式的數(shù)組。一維數(shù)組只有一個維度,二維數(shù)組有兩個維度,從形式上可以看作一個由行和列構成的二維表格,每個維度對應一個軸(axis)。如圖所示是一個二維數(shù)組,包含4行4列,第1維度(即第0軸)有4行,第2維度(即第1軸)有4列。1.使用array函數(shù)創(chuàng)建數(shù)組對象使用array函數(shù)可以將Python序列對象或可迭代對象轉換為NumPy數(shù)組。【例5-1】利用array函數(shù)生成NumPy數(shù)組。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組實現(xiàn)代碼如下:

importnumpyasnp#4只股票投資組合中的配置權重值列表weight=[0.25,0.35,0.20,0.20]weight_array=np.array(weight)#轉為NumPy數(shù)組print(type(weight_array))print(weight_array)#4只股票5天的漲跌幅數(shù)據(jù)列表rise_or_fall=[[0.02,-0.01,0.03,-0.02,0.01],[-0.01,0.03,-0.02,0.01,-0.03],[0.03,-0.01,0.02,-0.03,0.01],[-0.02,0.01,-0.03,0.02,-0.01]]rise_or_fall_array=np.array(rise_or_fall)print(type(rise_or_fall_array))print(rise_or_fall_array)數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結果如下:

<class'numpy.ndarray'>[0.250.350.20.2]<class'numpy.ndarray'>[[0.02-0.010.03-0.020.01][-0.010.03-0.020.01-0.03][0.03-0.010.02-0.030.01][-0.020.01-0.030.02-0.01]]數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組2.使用arange函數(shù)根據(jù)指定數(shù)值范圍創(chuàng)建數(shù)組使用arange函數(shù)創(chuàng)建基于指定區(qū)間,均勻分布數(shù)值的數(shù)組。語法結構為:用法類似Python的內置函數(shù)range(),只不過arange函數(shù)生成的是一系列數(shù)字元素的數(shù)組。【例5-2】使用arange函數(shù)創(chuàng)建數(shù)組示例。arange(start,stop,step)

importnumpyasnparr_1=np.arange(6)#創(chuàng)建一個由0~5的整數(shù)組成的一維數(shù)組print(arr_1)arr_2=np.arange(1,10,2)#創(chuàng)建一個元素為1~10、步長為2的數(shù)據(jù)組成的一維數(shù)組print(arr_2)數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結果如下:

[012345][13579]數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組還可以用arange函數(shù)結合reshape()方法改變數(shù)組的維度,例如將arr_1改為2行3列的二維數(shù)組,運行結果如下:

[[012][345]]

new_arr=arr_1.reshape(2,3)print(new_arr)數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組

importnumpyasnparr_1=np.random.randint(0,50,size=(3,4))#3行×4列的隨機整數(shù)print(arr_1)arr_2=np.random.rand(4)#[0,1)之間均勻分布的隨機數(shù)print(arr_2)arr_3=np.random.standard_normal(5)#符合標準正態(tài)分布的隨機數(shù)print(arr_3)3.創(chuàng)建隨機數(shù)數(shù)組使用numpy.random模塊中的函數(shù)可以創(chuàng)建隨機整數(shù)數(shù)組、隨機小數(shù)數(shù)組、符合正態(tài)分布的隨機數(shù)數(shù)組等。說明:由于是隨機數(shù),所以每次的執(zhí)行結果都不完全相同?!纠?-3】創(chuàng)建隨機數(shù)數(shù)組示例。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結果如下:

[[47272524][32421341][3741831]][0.50559110.926484010.596023710.10923207][0.225335951.29729245-1.403894561.36343792-1.67341697]數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組

importnumpyasnpforiinrange(3):np.random.seed(18)print(i,np.random.random())foriinrange(3):np.random.seed(i)print(i,np.random.random())seed函數(shù)用于指定隨機數(shù)生成時所用算法開始的整數(shù)值。(1)如果使用相同的seed函數(shù)值,則每次生成的隨機數(shù)都相同。(2)如果不設置這個值,則系統(tǒng)根據(jù)時間來自己選擇這個值,生成自己的種子,此時每次生成的隨機數(shù)因時間差異而不同。(3)設置的seed函數(shù)值僅一次有效?!纠?-4】seed函數(shù)的使用。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結果如下:

00.650374241739591710.650374241739591720.650374241739591700.548813503927324810.41702200470257420.43599490214200376數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組4.創(chuàng)建數(shù)組的其他方式在金融建模時,經(jīng)常會設定一些的數(shù)組,比如元素為0或者1的數(shù)組,以方便后續(xù)的計算。NumPy庫還提供了很多創(chuàng)建數(shù)組的其他函數(shù)。函數(shù)功能zeros()創(chuàng)建元素全為0的數(shù)組ones()創(chuàng)建元素全為1的數(shù)組ones_like()創(chuàng)建與已有數(shù)組相同形狀的零數(shù)組full()創(chuàng)建元素全為某個指定值的數(shù)組數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組4.創(chuàng)建數(shù)組的其他方式在金融建模時,經(jīng)常會設定一些的數(shù)組,比如元素為0或者1的數(shù)組,以方便后續(xù)的計算。NumPy庫還提供了很多創(chuàng)建數(shù)組的其他函數(shù)。函數(shù)功能linespace()用指定的起始值、終止值和元素個數(shù)創(chuàng)建一個等差數(shù)列l(wèi)ogspace()用指定的起始值、終止值和元素個數(shù)創(chuàng)建一個對數(shù)數(shù)列identity()/eye()創(chuàng)建單位矩陣數(shù)組的創(chuàng)建與訪問——查看數(shù)組屬性通過NumPy對象的shape、ndim、size、dtype等屬性可以查看數(shù)組的形狀、維度、大小和元素的數(shù)據(jù)類型。利用shape屬性查看數(shù)組形狀時,返回的元組中包含幾個元素就表示這是幾維數(shù)組,例如(4,)表示元組中只有一個元素,因此該數(shù)組為1維數(shù)組,而(4,5)二維數(shù)組;元組中的元素值表示每個維度的數(shù)據(jù)量,即每個軸的長度,例如(4,)表示該一維數(shù)組由4個數(shù)據(jù)組成,(4,5)表示該二維數(shù)組包含4行5列數(shù)據(jù)。數(shù)組的創(chuàng)建與訪問——訪問數(shù)組數(shù)組支持通過索引和切片訪問數(shù)組元素,通過索引可以訪問數(shù)組的單個元素,多個元素或一整行元素,NumPy中提供了多種形式的索引,常用的索引方式包括整數(shù)索引和布爾索引。1.整數(shù)索引:通過數(shù)組的下標訪問數(shù)組。(1)訪問一維數(shù)組數(shù)組對象名[下標]說明:可以使用索引、切片、列表作為下標。索引和切片的使用方法與訪問列表相同。數(shù)組也支持雙向索引,當正整數(shù)作為下標時,0表示第1個元素,1表示第2個元素,以此類推;當負整數(shù)作為下標時,-1表示最后1個元素,-2表示倒數(shù)第2個元素,以此類推。數(shù)組的創(chuàng)建與訪問——訪問數(shù)組數(shù)組支持通過索引和切片訪問數(shù)組元素,通過索引可以訪問數(shù)組的單個元素,多個元素或一整行元素,NumPy中提供了多種形式的索引,常用的索引方式包括整數(shù)索引和布爾索引。1.整數(shù)索引:通過數(shù)組的下標訪問數(shù)組。(2)訪問二維數(shù)組語法格式1:數(shù)組對象名[行下標]說明:按行訪問,行下標可以是索引、切片或列表形式。數(shù)組的創(chuàng)建與訪問——訪問數(shù)組數(shù)組支持通過索引和切片訪問數(shù)組元素,通過索引可以訪問數(shù)組的單個元素,多個元素或一整行元素,NumPy中提供了多種形式的索引,常用的索引方式包括整數(shù)索引和布爾索引。1.整數(shù)索引:通過數(shù)組的下標訪問數(shù)組。(2)訪問二維數(shù)組語法格式2:數(shù)組對象名[行下標,列下標]說明:通過行和列兩個維度定位元素。行下標和列下標可以是索引、切片或列表形式。使用“:”可以表示所有行或所有列。數(shù)組的創(chuàng)建與訪問——訪問數(shù)組數(shù)組支持通過索引和切片訪問數(shù)組元素,通過索引可以訪問數(shù)組的單個元素,多個元素或一整行元素,NumPy中提供了多種形式的索引,常用的索引方式包括整數(shù)索引和布爾索引。2.布爾型索引訪問:數(shù)組對象名[布爾型索引]說明:布爾型索引通過一組布爾值(True或False)對NumPy數(shù)組進行取值操作,返回數(shù)組中索引值與True位置對應的元素。通常利用數(shù)組的條件運算(也稱為布爾運算)得到一組布爾值,再通過這組布爾值從數(shù)組中選出滿足條件的元素。數(shù)組的創(chuàng)建與訪問——修改數(shù)組對于已經(jīng)建立的數(shù)組,可以修改數(shù)組元素,也可以改變數(shù)組的形狀。1.修改數(shù)組元素使用下列NumPy函數(shù)可以添加或刪除數(shù)組元素。這些操作會返回一個新的數(shù)組,原數(shù)組不受影響。append:追加一個元素或一組元素。insert:在指定位置插入一個元素或一組元素。delete:刪除指定位置上的一個元素。通過為數(shù)組元素重新賦值也可以修改數(shù)組元素,但賦值操作屬于“原地修改”,會改變原來的數(shù)組。數(shù)組的創(chuàng)建與訪問——修改數(shù)組2.查詢數(shù)組元素數(shù)組的查詢既可以使用索引和切片方法來獲取指定范圍的數(shù)組或數(shù)組元素,還可以通過where函數(shù)查詢符合條件的數(shù)組或數(shù)組元素。where函數(shù)的語法如下:numpy.where(condition,x,y)說明:第一個參數(shù)condition為一個布爾數(shù)組,第二個參數(shù)x和第三個參數(shù)y可以是標量也可以是數(shù)組。功能:滿足條件(參數(shù)condition),則輸出參數(shù)x;不滿足條件則輸出參數(shù)y。如果不指定參數(shù)x和y,則輸出滿足條件的數(shù)組元素。數(shù)組的創(chuàng)建與訪問——修改數(shù)組3.數(shù)組的重塑數(shù)組重塑實際是更改數(shù)組的形狀,例如,將原來2行3列的數(shù)組重塑為3行2列的數(shù)組。使用數(shù)組對象的shape屬性和reshape()、flatten()、ravel()等方法可以在保持元素數(shù)目不變的情況下改變數(shù)組的形狀,即只是改變數(shù)組每個軸的長度來實現(xiàn)數(shù)組的重塑。在NumPy中常使用reshape()方法用于改變數(shù)組的形狀。與reshape()相反的功能方法是數(shù)據(jù)散開(ravel()方法)或數(shù)據(jù)扁平化(flatten()方法)?!纠?-13】數(shù)組重塑示例。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組實現(xiàn)代碼如下:

importnumpyasnp#4只股票5天的漲跌幅數(shù)據(jù)列表rise_or_fall=[0.02,-0.01,0.03,-0.02,0.01,-0.01,0.03,-0.02,0.01,-0.03,0.03,-0.01,0.02,-0.03,0.01,-0.02,0.01,-0.03,0.02,-0.01]rise_or_fall_array=np.array(rise_or_fall)print("創(chuàng)建的一維數(shù)組為:\n",rise_or_fall_array)re_rise_or_fall_array=rise_or_fall_array.reshape(4,5)print("由一維變二維數(shù)組為:\n",re_rise_or_fall_array)ra_rise_or_fall_array=re_rise_or_fall_array.ravel()print("數(shù)據(jù)散開為:\n",ra_rise_or_fall_array)數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行

溫馨提示

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

評論

0/150

提交評論