Python數(shù)據(jù)分析與可視化教案2.8 Python的NumPy庫(kù)_第1頁(yè)
Python數(shù)據(jù)分析與可視化教案2.8 Python的NumPy庫(kù)_第2頁(yè)
Python數(shù)據(jù)分析與可視化教案2.8 Python的NumPy庫(kù)_第3頁(yè)
Python數(shù)據(jù)分析與可視化教案2.8 Python的NumPy庫(kù)_第4頁(yè)
Python數(shù)據(jù)分析與可視化教案2.8 Python的NumPy庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 題2.8 Python 的 NumPy 庫(kù)課 型講練授課班級(jí)大數(shù)據(jù)授課時(shí)數(shù)4教學(xué)目標(biāo).能夠創(chuàng)立一維和二維數(shù)組。2,能夠?qū)?shù)組進(jìn)行屬性查詢(xún)。.能夠?qū)?shù)組進(jìn)行切片操作。教學(xué)重點(diǎn)1,能夠創(chuàng)立一維和二維數(shù)組。2.能夠?qū)?shù)組進(jìn)行屬性查詢(xún)。教學(xué)難點(diǎn)1.能夠?qū)?shù)組進(jìn)行切片操作。在構(gòu)建DataFrame的數(shù)據(jù)集時(shí),有一種方法就是借助于二維數(shù)組創(chuàng)立,學(xué)情分析學(xué)情分析因此,掌握二維數(shù)組對(duì)于后續(xù)內(nèi)容的學(xué)習(xí)很重要。NumPy是Python的開(kāi)源的科學(xué)計(jì)算機(jī)工具包,是一個(gè)高級(jí)數(shù)值編程工具,通過(guò) NumPy可以不用遍歷循環(huán)就實(shí)現(xiàn)大型的矩陣的計(jì)算。NumPy可以實(shí)現(xiàn)生成隨機(jī)數(shù)、 線(xiàn)性代數(shù)、傅里葉變換等功能。同時(shí),Num

2、Py可以保存任意類(lèi)型的數(shù)據(jù),這使得Numpy 可以快速而高效地處理各種數(shù)據(jù)。NumPy提供了許多高級(jí)的數(shù)值編程工具,如矩陣 數(shù)據(jù)類(lèi)型、矢量處理,以及精密的運(yùn)算庫(kù),NumPy專(zhuān)為進(jìn)行嚴(yán)格的數(shù)字處理而產(chǎn)生。在導(dǎo)入NumPy的時(shí)候,一般需要先使用一行代碼,代碼如下:import numpy as np一、創(chuàng)立數(shù)組對(duì)象1.創(chuàng)立一維數(shù)組當(dāng)數(shù)組中每個(gè)元素都只帶有一個(gè)下標(biāo)時(shí),這樣的數(shù)組就是一維數(shù)組,一維數(shù)組是 由數(shù)字組成的順序排序單一數(shù)組。一維數(shù)組是計(jì)算機(jī)程序中最基本的數(shù)組,二維及多 維數(shù)組可以看作是一維數(shù)組的屢次疊加產(chǎn)生的。Python提供array函數(shù)可以創(chuàng)立一維數(shù)組,通過(guò)array函數(shù)創(chuàng)立一維數(shù)組類(lèi)似

3、于 創(chuàng)立列表list,但是array函數(shù)沒(méi)有各種運(yùn)算函數(shù),因此不太適合進(jìn)行各種復(fù)雜計(jì)算。 利用array函數(shù)創(chuàng)立一維數(shù)組的一般格式為:np.array(valuel, value2/*)例如代碼如下:import numpy as nparrl = np.array(l,2,3)print(創(chuàng)立的一維數(shù)組為arrl為:n,arrl)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py創(chuàng)立的一維數(shù)組為arE為:1 2 3UrpProcess finish

4、ed with exit code 0圖2-*創(chuàng)立一維數(shù)組例如結(jié)果2 .創(chuàng)立二維數(shù)組二維數(shù)組與一維數(shù)組相似,但是用法上耍比一維數(shù)組復(fù)雜一點(diǎn)。僅從表現(xiàn)形式上 看,m行n列二維數(shù)組就是一個(gè)m*n矩陣。利用array函數(shù)也可以創(chuàng)立二維數(shù)組,利 用aiTay函數(shù)創(chuàng)立二維數(shù)組的一般格式為:np.array(valuell, value 12, J,Ivalue21, value22,/)其中,在創(chuàng)立二維數(shù)組時(shí),需要加2層括號(hào),這一點(diǎn)與創(chuàng)立一維數(shù)組不同。例如代碼如下:arr2 = np.array(l,2,3,2,3,4)print(創(chuàng)立的2*3的二維數(shù)組為:n”,arr2)arr3 = np.array

5、(l,2,3,2,3,4,3,4,5)print(創(chuàng)立的3*3的二維數(shù)組為:n”,arr3)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py創(chuàng)立的2*3的二維數(shù)組為arr2為:士1123 2 3 4共創(chuàng)立的3*3的二維數(shù)組為arr3為:1 2 32 3 434 5Process finished with exit code 0圖2-*創(chuàng)立二維數(shù)組例如結(jié)果3利用arange和linspace等方法生成數(shù)組利用array函數(shù)創(chuàng)立數(shù)組,其方法都是先創(chuàng)立

6、一個(gè)序列,然后再轉(zhuǎn)換成數(shù)組,這 樣的創(chuàng)立數(shù)組的效率顯然不高,因此NumPy提供專(zhuān)門(mén)的函數(shù)用來(lái)創(chuàng)立數(shù)組,如arange 函數(shù)和linspace函數(shù)。(1)利用arange函數(shù)生成數(shù)組arange函數(shù)類(lèi)似于Python的自帶函數(shù)range, arange函數(shù)的一般格式為:np.arange (start,stop,step)其中,start表示初始值,stop表示終止值,并且終止值不能取到的,st叩表示步 長(zhǎng)。(2)利用linspace函數(shù)生成數(shù)組linspace函數(shù)可以不通過(guò)間隔而是元素個(gè)數(shù)的方式成數(shù)組,linspace函數(shù)一般格式 為:np.linspace (start,stop,n)其中,

7、start表示初始值,stop表示終止值,并且終止值是可以取到的,這一點(diǎn)與 arange函數(shù)不同,n表示生成數(shù)組的元素個(gè)數(shù)。例如代碼如下:print(n0到1之間以0.2為間隔的數(shù)組為:*np.arange(0,l,0.2)print。到1之間以0.2為間隔的數(shù)組為二npinspace(0,0.8,5)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py。到1之間以0.2為間隔的數(shù)組為:0.0.2 0.4 0.6 0.8。到1之間以0.2為間隔的數(shù)組為

8、:0. 0.2 0.4 0.6 0.85s =5Process finished with exit code 0圖2-*利用arange和linspace等方法生成數(shù)組例如結(jié)果二、查看數(shù)組屬性為了能夠更好地理解數(shù)組,了解數(shù)組的基本屬性是十分有必要的,數(shù)組的基本屬 性如表2-*所示。表2-*數(shù)組屬性及其作用表例如代碼如下:屬性作用ndim表示數(shù)組的維度。shape表示數(shù)組形狀,結(jié)果為(m,n)表示m行n列,shape0表示行數(shù),shapelW示列數(shù)。size表示數(shù)組的元素總數(shù)。dtype表示數(shù)組中兀素的類(lèi)型。print(narrl的維度為:dnarr2的維度為:小皿仃3的維度為:矛%(arr

9、1 .ndim,arr2.ndim,arr3.ndim)print(arr2:n,arr2)print(Harr2 的形狀為:arr2.shape)print(narr2 的行數(shù)為:,air2.shape0)print(narr2 的列數(shù)為:”,an2shapel)print(narr2 的元素總數(shù)為:,arr2.size)print(narr2 的元素類(lèi)型為:,arr2.dtype)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.pyarrl的維度為

10、:1arr2的維度為:2- $ arr3的維度為:2arr2:-12 32 3 4 arr2的形狀為:(2, 3)arr2的行數(shù)為:2arr2的列數(shù)為:3arr2的元素總數(shù)為:6arr2的元素類(lèi)型為:int32Process finished with exit code 0圖2-*查看數(shù)組屬性例如結(jié)果三、數(shù)組的索引與切片.一維數(shù)組的索引與切片一維數(shù)組的索引與切片與列表類(lèi)似,一維數(shù)組的索引和切片一般格式為:arrayindexarray start:last:step其中,index表示索引位置,并且是從。開(kāi)始的。start表示起始索引,start可以 省略,默認(rèn)是0。last表示終止索引,并

11、且這個(gè)終止索引是不能取到的。step表示索 引步長(zhǎng),即索引之間的間隔。例如代碼如下:arr4 = np.arange( 11,20)print(數(shù)組為:arr4)print(索引號(hào)1對(duì)應(yīng)的元素為:,arr4l)print(索引號(hào)1到索引號(hào)4對(duì)應(yīng)的切片為二arr4l:5)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py數(shù)組為:11 12 13 14 15 16 17 18 19 索引號(hào)1對(duì)應(yīng)的元素為:12 名 索弓I號(hào)1到索引號(hào)4對(duì)應(yīng)的切片為:12

12、13 14 15 2”. Process finished with exit code 0W圖2-* 一維數(shù)組的索引與切片例如結(jié)果.二維數(shù)組的索引與切片二維數(shù)組兩個(gè)維度(行與列)都有索引,在訪(fǎng)問(wèn)的時(shí)候,要用逗號(hào)隔開(kāi),并且是 先訪(fǎng)問(wèn)行索引再訪(fǎng)問(wèn)列索引。二維數(shù)組的索引和切片一般格式為:array row_index,column_indexarrayrow_start:row_last, column_start:column_last其中,row_index表示行索引位置,columnjndex表示列索引位置,并且都是從0 開(kāi)始。row_start和column_start表示行與列的起始索引

13、,默認(rèn)是0。row_last和 columnast表示行與列的終止索引,并且這個(gè)終止索引對(duì)應(yīng)的值是不能取到的。例如代碼如下:arr5 = np.array(l ,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)print(數(shù)組為:n”,arr5)print(”行索引為1,列索引為2對(duì)應(yīng)的元素為:n”,arr5l,2)print(”行索引為1到2,列索引為2到3對(duì)應(yīng)的元素為:n”,arr5l:3,2:4)print(”行索引為2的整列數(shù)據(jù)為二arr52,:)print(咧索引為3的整列數(shù)據(jù)為:,arr5:,3)輸出結(jié)果如圖2-*所示。Run:2-8C:UsersliIi

14、angAnaconda3python.exe C:UsersliliangPycharmProjectspython2-8.py數(shù)組為: 1 2 3 4二方 5 6 7 8 二 9 10 11 12 .13 14 15 16行索引為1,列索引為2對(duì)應(yīng)的元紊為:i 7行索引為1到2,列索引為2到3對(duì)應(yīng)的元素為:7 8 11 12行索引為2的整列數(shù)據(jù)為:9 10 11 12列索引為3的整列數(shù)據(jù)為:4 8 12 16Process finished with exit code 0圖2-*二維數(shù)組的索引與切片例如結(jié)果四、NumPy隨機(jī)數(shù)NumPy有強(qiáng)大的生成隨機(jī)數(shù)的功能,而與隨機(jī)數(shù)相關(guān)的函數(shù)都在ra

15、ndom模塊中, 其中包含了可以生成多種概率分布的隨機(jī)數(shù)函數(shù),但是需要注意的是,使用numpy 庫(kù)中的random模塊和直接使用python中random模塊在一些函數(shù)上有不同的使用方 法。比方生成隨機(jī)整數(shù)randint,在numpy庫(kù)中是使用random.randint是不能取到終止 整數(shù)的,而在python的random模塊中,使用randint是可以取到終止整數(shù)的。1.生成隨機(jī)小數(shù)(1)生成一維隨機(jī)小數(shù)生成1個(gè)0到1之間隨機(jī)小數(shù)的一般格式為:np.random.rand()生成x個(gè)。至U 1之間隨機(jī)小數(shù)組成的一維數(shù)組的一般格式為:np.random.rand(x)生成1個(gè)。到y(tǒng) (y為整

16、型)之間隨機(jī)小數(shù)的一般方法為:np.random.randOy生成x個(gè)0到y(tǒng) (y為整型)之間隨機(jī)小數(shù)組成的一維數(shù)組的一般方法為: np.random.rand(x)*y例如代碼如下:print。生成1個(gè)0到1之間的小數(shù)”,。)print(生成 5 個(gè) 0 到 1 之間的小數(shù)”,np.random.rand(5)print(生成 1 個(gè) 0 至2 之間的小數(shù)”,np.random.rand()*2)print(生成 5 個(gè) 0 至U 2 之間的小數(shù)”,np.random.rand(5)*2)輸出結(jié)果如圖2.*所示。Run:2-8AC:UsersliliangAnaconda3python.ex

17、e C:/Users/liliang/PycharmProjects/sjfx/2-8.py生成1個(gè)0到1之間的小數(shù)0.33359570130654226生成5個(gè)。到 1 之間的小數(shù)0.55651845 0.28576281 0.91099991 0.33486916 0.11101831 rp 生成1個(gè)0到2之間的小數(shù)4 生成5個(gè)。到2之間的小數(shù)1.70919045 1.26134277 0.98300627 1.65530256 0.80848382X 二Process finished with exit code 0圖2-*生成一維隨機(jī)小數(shù)例如結(jié)果(2)生成二維隨機(jī)小數(shù)生成m行n列的0

18、到1之間隨機(jī)小數(shù)二維數(shù)組的一般方法為:np.random.rand(m,m)例如代碼如下:print(生成 2*2 的 0 到 1 的隨機(jī)小數(shù)二維數(shù)組:n”,np.random.rand(2,2)print(生成 2*3 的 0 到 2 的隨機(jī)小數(shù)二維數(shù)組:n”,np.random.rand(2,3)*2)輸出結(jié)果如圖2-*所示。 Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py生成2*2的。到1.的隨機(jī)小數(shù)二維數(shù)組:0.44104325 0.8217508 0.5099

19、9213 0.45840465R 生成2*3的。到2的隨機(jī)小數(shù)二維數(shù)組:, 存 1.13204545 0.09509508 0.08085505 1.84992171 0.43329497 1.29572153Process finished with exit code 0圖2-*生成二維隨機(jī)小數(shù)不例結(jié)果.生成隨機(jī)整數(shù)生成隨機(jī)整數(shù)可以使用randint函數(shù),randint函數(shù)的一般方法為:np.random.randint(start,stop,size=m,n)其中,start表示起始整數(shù),stop表示終止整數(shù),起始整數(shù)能取到而終止整數(shù)不能 取到。size= m,n表示生成m行n列二維數(shù)組

20、,size默認(rèn)為None,即默認(rèn)生成一個(gè)隨機(jī)整數(shù)。例如代碼如下:print(生成 1 個(gè) 0 到 10 的隨機(jī)整數(shù):n”,np.random.randint( 11)print(生成 1 個(gè) 5 到 15 的隨機(jī)整數(shù):nnp.random.randint(5,l6)print(n生成 3*3 的 1 到 100 隨機(jī)整數(shù)二維數(shù)組:n,np.random.randint(l,101,size=3,3)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py生

21、成1個(gè)0到1。的隨機(jī)整數(shù):7 方生成1個(gè)5到15的隨機(jī)整數(shù):11_ 生成3*3的1到100的隨機(jī)整數(shù)二維數(shù)蛆:49 29 7548 7 614 79 92Process finished with exit code 0圖2-*生成隨機(jī)整數(shù)例如結(jié)果3 ,生成正態(tài)分布隨機(jī)數(shù)正態(tài)分布是數(shù)據(jù)分布中一種常用的分布,NumPy提供了 randn函數(shù)用來(lái)生成正態(tài) 分布的隨機(jī)數(shù)。生成x個(gè)正態(tài)分布隨機(jī)數(shù)組成的一維數(shù)組的一般方法為:np.random.randn(x)生成m行n列的正態(tài)分布隨機(jī)數(shù)二維數(shù)組的一般方法為:np.random.randn(m,n)例如代碼如下:print(生成10個(gè)正態(tài)分布的隨機(jī)數(shù):n

22、”,np.random.randn(10)print(生成3*3的正態(tài)分布隨機(jī)數(shù)的二維數(shù)組:n”,np.random.randn(3,3)輸出結(jié)果如圖2-*所示。Run:2-8C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py生成1。個(gè)正態(tài)分布的隨機(jī)數(shù):-1.38082781 -0.23040801 -0.24409116 0.07119311 0.68619652 0.89391238二 萬(wàn) 2,29635133 -2.04009219 -1.37541982 -0.60174799 丑

23、生成3*3的正態(tài)分布隨機(jī)數(shù)的二維數(shù)組:,一 1.19116624 1.76131985 0.46618962 -0.43352108 1.47914566 -0.48643985 1.5802139 -0.38085871 -0.65620729Process finished with exit code 0圖2-*生成隨機(jī)整數(shù)例如結(jié)果五、NumPy的操作.數(shù)組轉(zhuǎn)置數(shù)組轉(zhuǎn)置操作是指將行與列對(duì)調(diào),即第1行變成第1歹!J,第2行變成第2行,以 此類(lèi)推。在NumPy中,數(shù)組轉(zhuǎn)置可以使用T方法來(lái)實(shí)現(xiàn)。例如代碼如下:arr6 = np.array(l,2,3,4,5,6)print(narr6 =nn

24、,arr6)print(narr6轉(zhuǎn)置后的結(jié)果為:narr6.T)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.pyarr6 =二:1 2 3二 方4 5 6丑 arr6轉(zhuǎn)置后的結(jié)果為:-1 4T ”3 6Process finished with exit code 0圖2-*數(shù)組轉(zhuǎn)置例如結(jié)果.數(shù)組變形在對(duì)數(shù)組進(jìn)行操作時(shí),經(jīng)常需要對(duì)數(shù)據(jù)的形狀進(jìn)行改變,在NumPy中,可以使 用reshape函數(shù)改變數(shù)組的形狀。reshape函數(shù)一般方法為:arra

25、y.reshape(m,n)其中,array表示需要改變的原數(shù)組,m和n分別表示轉(zhuǎn)換后的新數(shù)組的行數(shù)和 列數(shù)。例如代碼如下:arr7 = np.arange(lO)print(原數(shù)組為:n”,arr7)arr7.reshape(2,5)print(改為 2 行 5 列后的數(shù)組為:n”,arr7.reshape(2,5)輸出結(jié)果如圖2-*所示。Run:2-8AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/2-8.py原數(shù)組為:0123456789 rp 改為2行5列后的數(shù)組為:20123 4 5678 9WProcess finished with exit code 0圖2-*數(shù)組變形例如結(jié)果任務(wù)實(shí)訓(xùn)任務(wù)1:用兩種方法創(chuàng)立由1到9九個(gè)數(shù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論