Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.2數(shù)組的運算_第1頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.2數(shù)組的運算_第2頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.2數(shù)組的運算_第3頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.2數(shù)組的運算_第4頁
Python財經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第5章-NumPy數(shù)值計算-5.2數(shù)組的運算_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python財經(jīng)應(yīng)用:編程基礎(chǔ)、數(shù)據(jù)分析與可視化第五章NumPy數(shù)值計算中國農(nóng)業(yè)大學(xué)李輝目錄01數(shù)組的創(chuàng)建與訪問02數(shù)組的運算03數(shù)組的操作目錄01數(shù)組的創(chuàng)建與訪問02數(shù)組的運算03數(shù)組的操作5.2數(shù)組的運算第五章NumPy數(shù)值計算數(shù)組的運算——數(shù)組的轉(zhuǎn)置

importnumpyasnp#4只股票投資組合中的配置權(quán)重值列表weight=[0.25,0.35,0.20,0.20]weight_array=np.array(weight)print("輸出原矩陣:\n",weight_array)t_weight_array=weight_array.T#一維數(shù)組轉(zhuǎn)置后和原來是一樣的print("輸出轉(zhuǎn)置后的矩陣:\n",t_weight_array)#4只股票5天的漲跌幅數(shù)據(jù)列表數(shù)組的轉(zhuǎn)置:交換數(shù)組的行和列,可以使用數(shù)組對象的T操作完成轉(zhuǎn)置?!纠?-14】矩陣的轉(zhuǎn)置的示例。數(shù)組的運算——數(shù)組的轉(zhuǎn)置

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("輸出原矩陣:\n",rise_or_fall_array)t_rise_or_fall_array=rise_or_fall_array.Tprint("輸出轉(zhuǎn)置后的矩陣:\n",t_rise_or_fall_array)數(shù)組的轉(zhuǎn)置:交換數(shù)組的行和列,可以使用數(shù)組對象的T操作完成轉(zhuǎn)置。【例5-14】矩陣的轉(zhuǎn)置的示例。數(shù)組的運算——數(shù)組的轉(zhuǎn)置運行結(jié)果如下:

輸出原矩陣:[0.250.350.20.2]輸出轉(zhuǎn)置后的矩陣:[0.250.350.20.2]輸出原矩陣:[[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]]輸出轉(zhuǎn)置后的矩陣:[[0.02-0.010.03-0.02][-0.010.03-0.010.01][0.03-0.020.02-0.03][-0.020.01-0.030.02][0.01-0.030.01-0.01]]數(shù)組的運算——數(shù)組的算術(shù)運算1.數(shù)組與標量的算術(shù)運算標量就是一個數(shù)值,既可以使用算術(shù)運算符又可以使用相應(yīng)功能的數(shù)學(xué)函數(shù)對數(shù)組和標量進行算術(shù)運算。當數(shù)組與標量進行算術(shù)運算時,數(shù)組中的每個元素都與標量進行運算,結(jié)果返回一個新的數(shù)組。對于除法運算和乘方運算,標量在前和在后時的運算方法是不同的。算術(shù)運算算術(shù)運算符數(shù)學(xué)函數(shù)加+add()減-subtract()乘*multiply()除/divide()整除//divmod()(整除得到商和余數(shù))取余%remainder()乘方**power()開方

√ ̄sqrt()數(shù)組的運算——數(shù)組的算術(shù)運算

importnumpyasnparr_1=np.array((1,2,3,4,5))print("數(shù)組:\n",arr_1)print("數(shù)組與2相加的結(jié)果:\n",arr_1+2)#相加print("數(shù)組與2相除的結(jié)果:\n",arr_1/2)#相除print("數(shù)組與2次冪的結(jié)果:\n",arr_1**2)#計算數(shù)組中每個元素的2次方print("數(shù)組與2相乘的結(jié)果:\n",np.multiply(arr_1,2))#相乘#結(jié)果分別表示商和余數(shù)print("數(shù)組與2整除得到商和余數(shù)的結(jié)果:\n",np.divmod(arr_1,2))【例5-15】矩陣的加、減、乘和除運算。數(shù)組的運算——數(shù)組的轉(zhuǎn)置運行結(jié)果如下:

數(shù)組:[12345]數(shù)組與2相加的結(jié)果:[34567]數(shù)組與2相除的結(jié)果:[0.51.1.52.2.5]數(shù)組與2次冪的結(jié)果:[1491625]數(shù)組與2相乘的結(jié)果:[246810]數(shù)組與2整除得到商和余數(shù)的結(jié)果:(array([0,1,1,2,2]),array([1,0,1,0,1]))數(shù)組的運算——數(shù)組的算術(shù)運算2.形狀相同的數(shù)組間運算當數(shù)組與數(shù)組進行算術(shù)運算時,如果兩個數(shù)組的形狀相同,則得到一個新數(shù)組,其中每個元素值為兩個數(shù)組中相同位置上的元素進行算術(shù)運算后的結(jié)果。形狀相同的數(shù)組間運算被稱為數(shù)組的矢量化運算。例如,兩個形狀均為(2,3)的數(shù)組data1和data2,這兩個數(shù)組相加得到新數(shù)組result的計算.無論形狀是否相同,數(shù)組之間都可以執(zhí)行算術(shù)運算,與Python的列表不同,數(shù)組在參與算術(shù)運算時,無須遍歷每個元素,便可以執(zhí)行批量運算,效率更高。創(chuàng)建數(shù)組后,可以進行算術(shù)運算、布爾運算、點積運算和統(tǒng)計運算等。數(shù)組間的運算需要遵循三個規(guī)律:若干個二維數(shù)組之間的運算,這些數(shù)組應(yīng)當具有相同行數(shù)和相同列數(shù)(相同的形狀)。二維數(shù)組與一維數(shù)組之間的運算,一維數(shù)組的元素個數(shù)應(yīng)當?shù)扔诙S數(shù)組的列數(shù)。若干個一維數(shù)組之間的運算,這些數(shù)組應(yīng)當具有相同的元素數(shù)量。數(shù)組的運算——數(shù)組的轉(zhuǎn)置數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結(jié)果如下:

<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ù)組NumPy提供了多種創(chuàng)建數(shù)組的方法,可以創(chuàng)建多種形式的數(shù)組。一維數(shù)組只有一個維度,二維數(shù)組有兩個維度,從形式上可以看作一個由行和列構(gòu)成的二維表格,每個維度對應(yīng)一個軸(axis)。如圖所示是一個二維數(shù)組,包含4行4列,第1維度(即第0軸)有4行,第2維度(即第1軸)有4列。1.使用array函數(shù)創(chuàng)建數(shù)組對象使用array函數(shù)可以將Python序列對象或可迭代對象轉(zhuǎn)換為NumPy數(shù)組?!纠?-1】利用array函數(shù)生成NumPy數(shù)組。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組2.使用arange函數(shù)根據(jù)指定數(shù)值范圍創(chuàng)建數(shù)組使用arange函數(shù)創(chuàng)建基于指定區(qū)間,均勻分布數(shù)值的數(shù)組。語法結(jié)構(gòu)為:用法類似Python的內(nèi)置函數(shù)range(),只不過arange函數(shù)生成的是一系列數(shù)字元素的數(shù)組?!纠?-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ù)組還可以用arange函數(shù)結(jié)合reshape()方法改變數(shù)組的維度,例如將arr_1改為2行3列的二維數(shù)組,運行結(jié)果如下:

[[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í)行結(jié)果都不完全相同?!纠?-3】創(chuàng)建隨機數(shù)數(shù)組示例。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結(jié)果如下:

[[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)如果不設(shè)置這個值,則系統(tǒng)根據(jù)時間來自己選擇這個值,生成自己的種子,此時每次生成的隨機數(shù)因時間差異而不同。(3)設(shè)置的seed函數(shù)值僅一次有效。【例5-4】seed函數(shù)的使用。數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組運行結(jié)果如下:

00.650374241739591710.650374241739591720.650374241739591700.548813503927324810.41702200470257420.43599490214200376數(shù)組的創(chuàng)建與訪問——創(chuàng)建數(shù)組4.創(chuàng)建數(shù)組的其他方式在金融建模時,經(jīng)常會設(shè)定一些的數(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位置對應(yīng)的元素。通常利用數(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_a

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論