




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第九章
科學(xué)計(jì)算庫NumPy在此輸入副標(biāo)題·認(rèn)識和創(chuàng)建數(shù)組·數(shù)組的數(shù)據(jù)類型·數(shù)組運(yùn)算·索引和切片操作·轉(zhuǎn)置和軸對稱·通用函數(shù)·數(shù)組處理數(shù)據(jù)·線性代數(shù)模塊·隨機(jī)數(shù)模塊掌握熟悉掌握掌握
1234學(xué)習(xí)目標(biāo)掌握創(chuàng)建數(shù)組,數(shù)組運(yùn)算,索引與切片熟悉數(shù)據(jù)類型,線性代數(shù)模塊,隨機(jī)數(shù)模塊掌握利用數(shù)組進(jìn)行數(shù)據(jù)處理掌握轉(zhuǎn)置和軸對稱,通用函數(shù)9.19.29.39.49.59.6目錄CONTENTS認(rèn)識NumPy數(shù)組對象創(chuàng)建NumPy數(shù)組ndarray對象的數(shù)據(jù)類型數(shù)組運(yùn)算ndarray的索引和切片數(shù)組的轉(zhuǎn)置和軸對稱9.79.89.99.10目錄CONTENTSNumPy通用函數(shù)利用NumPy數(shù)組進(jìn)行數(shù)據(jù)處理線性代數(shù)模塊隨機(jī)數(shù)模塊
第一部分PART019.1認(rèn)識NumPy數(shù)組對象NumPy中最重要的一個(gè)特點(diǎn)就是其N維數(shù)組對象,即ndarray(別名array)對象,該對象可以執(zhí)行一些科學(xué)計(jì)算。9.1認(rèn)識NumPy數(shù)組對象ndarray對象中定義了一些重要的屬性,見下表。9.1認(rèn)識NumPy數(shù)組對象
第而部分PART029.2創(chuàng)建NumPy數(shù)組最簡單的創(chuàng)建ndarray對象的方式是使用array()函數(shù),在調(diào)用該函數(shù)時(shí)傳入一個(gè)列表或者元組。#創(chuàng)建一個(gè)一維數(shù)組data1=np.array([1,2,3])#創(chuàng)建一個(gè)二維數(shù)組data2=np.array([[1,2,3],[4,5,6]])array([1,2,3])array([[1,2,3],
[4,5,6]])9.2創(chuàng)建NumPy數(shù)組通過zeros()函數(shù)創(chuàng)建元素值都是0的數(shù)組;通過ones()函數(shù)創(chuàng)建元素值都為1的數(shù)組。#創(chuàng)建元素值全是0的數(shù)組np.zeros((3,4))#創(chuàng)建元素值全是1的數(shù)組np.ones((3,4))array([[0.,0.,0.,0.],
[0.,0.,0.,0.],
[0.,0.,0.,0.]])array([[1.,1.,1.,1.],
[1.,1.,1.,1.],
[1.,1.,1.,1.]])9.2創(chuàng)建NumPy數(shù)組通過empty()函數(shù)創(chuàng)建一個(gè)新的數(shù)組,該數(shù)組只分配了內(nèi)存空間,它里面填充的元素都是隨機(jī)的。#創(chuàng)建元素值全是隨機(jī)數(shù)的數(shù)組np.empty((5,2))array([[-2.00000000e+000,-2.00390463e+000],
[2.37663529e-312,2.56761491e-312],
[8.48798317e-313,9.33678148e-313],
[8.70018275e-313,2.12199581e-314],
[0.00000000e+000,6.95335581e-309]])9.2創(chuàng)建NumPy數(shù)組np.arange(1,20,5)array([1,6,11,16])通過arange()函數(shù)可以創(chuàng)建一個(gè)等差數(shù)組,它的功能類似于range(),只不過arange()函數(shù)返回的結(jié)果是數(shù)組,而不是列表。9.2創(chuàng)建NumPy數(shù)組大家可能注意到,有些數(shù)組元素的后面會跟著一個(gè)小數(shù)點(diǎn),而有些元素后面沒有,比如1和1.,產(chǎn)生這種現(xiàn)象,主要是因?yàn)樵氐臄?shù)據(jù)類型不同所導(dǎo)致的。9.2創(chuàng)建NumPy數(shù)組
第三部分PART039.3ndarray對象的數(shù)據(jù)類型ndarray.dtype可以創(chuàng)建一個(gè)表示數(shù)據(jù)類型的對象,如果希望獲取數(shù)據(jù)類型的名稱,則需要訪問name屬性進(jìn)行獲取。data_one=np.array([[1,2,3],[4,5,6]])data_
'int32'9.3.1查看數(shù)據(jù)類型NumPy的數(shù)據(jù)類型是由一個(gè)類型名和元素位長的數(shù)字組成。通過zeros()、ones()、empty()函數(shù)創(chuàng)建的數(shù)組,默認(rèn)的數(shù)據(jù)類型為float64。默認(rèn)情況下,64位windows系統(tǒng)輸出的結(jié)果為int32,64位Linux或macOS系統(tǒng)輸出結(jié)果為int64,當(dāng)然也可以通過dtype來指定數(shù)據(jù)類型的長度。9.3.1查看數(shù)據(jù)類型NumPy中常用的數(shù)據(jù)類型如右表所示。9.3.1查看數(shù)據(jù)類型每一個(gè)NumPy內(nèi)置的數(shù)據(jù)類型都有一個(gè)特征碼,它能唯一標(biāo)識一種數(shù)據(jù)類型。9.3.1查看數(shù)據(jù)類型ndarray對象的數(shù)據(jù)類型可以通過astype()方法進(jìn)行轉(zhuǎn)換。data=np.array([[1,2,3],[4,5,6]])data.dtype#數(shù)據(jù)類型轉(zhuǎn)換為float64float_data=data.astype(np.float64)float_data.dtypedtype('int64')dtype('float64')9.3.2轉(zhuǎn)換數(shù)據(jù)類型
第四部分PART049.4數(shù)組運(yùn)算數(shù)組運(yùn)算可以分為以下三種:形狀相同的數(shù)組數(shù)組形狀不同的數(shù)組標(biāo)量矢量化運(yùn)算廣播機(jī)制數(shù)組與標(biāo)量運(yùn)算9.4.1矢量化運(yùn)算形狀相等的數(shù)組之間的任何算術(shù)運(yùn)算都會應(yīng)用到元素級,即只用于位置相同的元素之間,所得的運(yùn)算結(jié)果組成一個(gè)新的數(shù)組。9.4.1矢量化運(yùn)算當(dāng)形狀不相等的數(shù)組執(zhí)行算術(shù)計(jì)算的時(shí)候,就會出現(xiàn)廣播機(jī)制,該機(jī)制會對數(shù)組進(jìn)行擴(kuò)展,使數(shù)組的shape屬性值一樣,這樣就可以進(jìn)行矢量化運(yùn)算了。9.4.2數(shù)組廣播廣播機(jī)制需要滿足如下任意一個(gè)條件即可:(1)兩個(gè)數(shù)組的某一維度等長。(2)其中一個(gè)數(shù)組為一維數(shù)組。廣播機(jī)制需要擴(kuò)展維度小的數(shù)組,使得它與維度最大的數(shù)組的shape值相同,以便使用元素級函數(shù)或者運(yùn)算符進(jìn)行運(yùn)算。9.4.2數(shù)組廣播標(biāo)量運(yùn)算會產(chǎn)生一個(gè)與數(shù)組具有相同行和列的新矩陣,其原始矩陣的每個(gè)元素都被相加、相減、相乘或者相除。123456+101010101010=1112131415169.4.3數(shù)組與標(biāo)量間的運(yùn)算
第五部分PART059.5ndarray索引和切片對于一維數(shù)組來說,從表面上來看,它使用索引和切片的方式,與Python列表的功能相差不大。arr=np.arange(8)#獲取索引為5的元素arr[5]#獲取索引為3~5的元素,但不包括5arr[3:5]5array([3,4])9.5.1整數(shù)索引和切片的基本使用對于多維數(shù)組來說,索引和切片的使用方式與列表就大不一樣了,比如二維數(shù)組的索引方式如下:9.5.1整數(shù)索引和切片的基本使用在二維數(shù)組中,每個(gè)索引位置上的元素不再是一個(gè)標(biāo)量了,而是一個(gè)一維數(shù)組。arr2d=np.array([[1,2,3],
[4,5,6],
[7,8,9]])#獲取索引為1的元素arr2d[1]array([4,5,6])9.5.1整數(shù)索引和切片的基本使用如果想獲取二維數(shù)組的單個(gè)元素,則需要通過形如“arr[x,y]”的索引來實(shí)現(xiàn),其中x表示行號,y表示列號。#獲取位于第0行第1列的元素arr2d[0,1]29.5.1整數(shù)索引和切片的基本使用多維數(shù)組的切片是沿著行或列的方向選取元素的,我們可以傳入一個(gè)切片,也可以傳入多個(gè)切片,還可以將切片與整數(shù)索引混合使用。arr2d[:2]使用一個(gè)切片示例:array([[1,2,3],
[4,5,6]])9.5.1整數(shù)索引和切片的基本使用arr2d[0:2,0:2]使用兩個(gè)切片示例:array([[1,2],
[4,5]])arr2d[1,:2]切片與整數(shù)索引混合使用的示例:array([[1,2],
[4,5]])9.5.1整數(shù)索引和切片的基本使用花式索引是NumPy的一個(gè)術(shù)語,是指用整數(shù)數(shù)組或列表進(jìn)行索引,然后再將數(shù)組或列表中的每個(gè)元素作為下標(biāo)進(jìn)行取值。當(dāng)使用一個(gè)數(shù)組或列表作為索引時(shí),如果使用索引要操作的對象是一維數(shù)組,則獲取的結(jié)果是對應(yīng)下標(biāo)的元素。9.5.2花式(數(shù)組)索引的基本使用#創(chuàng)建一個(gè)二維數(shù)組demo_arr=np.empty((4,4))foriinrange(4):demo_arr[i]=np.arange(i,i+4)#獲取索引為[0,2]的元素demo_arr[[0,2]]如果要操作的對象是一個(gè)二維數(shù)組,則獲取的結(jié)果就是對應(yīng)下標(biāo)的一行數(shù)據(jù)。9.5.2花式(數(shù)組)索引的基本使用#獲取索引為(1,1)和(3,2)的元素demo_arr[[1,3],[1,2]]如果用兩個(gè)花式索引操作數(shù)組,則會將第1個(gè)作為行索引,第2個(gè)作為列索引,以二維數(shù)組索引的方式選取其對應(yīng)位置的元素。9.5.2花式(數(shù)組)索引的基本使用布爾型索引指的是將一個(gè)布爾數(shù)組作為數(shù)組索引,返回的數(shù)據(jù)是布爾數(shù)組中True對應(yīng)位置的值。array([False,False,
True,False])9.5.3布爾型索引的基本使用
第六部分PART069.6數(shù)組的轉(zhuǎn)置和軸對稱數(shù)組的轉(zhuǎn)置指的是將數(shù)組中的每個(gè)元素按照一定的規(guī)則進(jìn)行位置變換。NumPy提供了兩種實(shí)現(xiàn)方式:T屬性transpose()方法9.6數(shù)組的轉(zhuǎn)置和軸對稱簡單的轉(zhuǎn)置可以使用T屬性,它其實(shí)就是進(jìn)行軸對換而已。04812563791011012485961037119.6數(shù)組的轉(zhuǎn)置和軸對稱當(dāng)使用transpose()方法對數(shù)組的shape進(jìn)行調(diào)換時(shí),需要以元組的形式傳入shape的編號,比如(1,0,2)。9.6數(shù)組的轉(zhuǎn)置和軸對稱如果我們不輸入任何參數(shù),直接調(diào)用transpose()方法,則其執(zhí)行的效果就是將數(shù)組進(jìn)行轉(zhuǎn)置,作用等價(jià)于transpose(2,1,0)。9.6數(shù)組的轉(zhuǎn)置和軸對稱有時(shí)可能只需要轉(zhuǎn)換其中的兩個(gè)軸,這時(shí)可以使用swapaxes()方法實(shí)現(xiàn),該方法需要接受一對軸編號,比如(1,0)。9.6數(shù)組的轉(zhuǎn)置和軸對稱高維數(shù)據(jù)執(zhí)行某些操作(如轉(zhuǎn)置)時(shí),需要指定維度編號,這個(gè)編號是從0開始的,然后依次遞增1。其中,位于縱向的軸(y軸)的編號為0,位于橫向的軸(x軸)的編號為1,以此類推。9.6.1多學(xué)一招
第七部分PART079.7NumPy通用函數(shù)通用函數(shù)(ufunc)是一種針對ndarray中的數(shù)據(jù)執(zhí)行元素級運(yùn)算的函數(shù),函數(shù)返回的是一個(gè)新的數(shù)組。我們將ufunc中接收一個(gè)數(shù)組參數(shù)的函數(shù)稱為一元通用函數(shù),接受兩個(gè)數(shù)組參數(shù)的則稱為二元通用函數(shù)。9.7NumPy通用函數(shù)常見的一元通用函數(shù)如下表:9.7NumPy通用函數(shù)9.7NumPy通用函數(shù)常見的一元通用函數(shù)如下表:9.7NumPy通用函數(shù)常見的二元通用函數(shù)如下表:
第一部分PART019.8利用NumPy數(shù)組進(jìn)行數(shù)據(jù)處理NumPy的where()函數(shù)是三元表達(dá)式xifconditionelsey的矢量化版本。arr_x=np.array([1,5,7])arr_y=np.array([2,6,8])arr_con=np.array([True,False,True])result=np.where(arr_con,arr_x,arr_y)array([1,6,7])9.8.1將條件邏輯轉(zhuǎn)為數(shù)組運(yùn)算通過NumPy庫中的相關(guān)方法,我們可以很方便地運(yùn)用Python進(jìn)行數(shù)組的統(tǒng)計(jì)匯總。9.8.2數(shù)組統(tǒng)計(jì)運(yùn)算如果希望對NumPy數(shù)組中的元素進(jìn)行排序,可以通過sort()方法實(shí)現(xiàn)。arr=np.array([[6,2,7],
[3,6,2],
[4,3,2]])arr.sort()array([[2,6,7],
[2,3,6],
[2,3,4]])9.8.3數(shù)組排序如果希望對任何一個(gè)軸上的元素進(jìn)行排序,則需要將軸的編號作為sort()方法的參數(shù)傳入。arr=np.array([[6,2,7],[3,6,2],[4,3,2]])#沿著編號為0的軸對元素排序arr.sort(0)array([[3,2,2],
[4,3,2],
[6,6,7]])9.8.3數(shù)組排序all()函數(shù)用于判斷整個(gè)數(shù)組中的元素的值是否全部滿足條件,如果滿足條件返回True,否則返回False。arr=np.array([[1,-2,-7],
[-3,6,2],
[-4,3,2]])#arr的所有元素是否都大于0np.all(arr>0)False9.8.4檢查數(shù)組元素any()函數(shù)用于判斷整個(gè)數(shù)組中的元素至少有一個(gè)滿足條件就返回True,否則就返回False。arr=np.array([[1,-2,-7],[-3,6,2],[-4,3,2]])#arr的所有元素是否有一個(gè)大于0np.any(arr>0)True9.8.4檢查數(shù)組元素針對一維數(shù)組,NumPy提供了unique()函數(shù)來找出數(shù)組中的唯一值,并返回排序后的結(jié)果。arr=np.array([12,11,34,23,12,8,11])np.unique(arr)array([8,11,12,23,34])9.8.5唯一化及其他集合邏輯in1d()函數(shù)用于判斷數(shù)組中的元素是否在另一個(gè)數(shù)組中存在,該函數(shù)返回的是一個(gè)布爾型的數(shù)組。arr=np.array([12,11,34,23,12,8,11])np.in1d(arr,[11,12])array([True,True,False,False,
True,False,True])9.8.5唯一化及其他集合邏輯NumPy提供的有關(guān)集合的函數(shù)還有很多,常見的函數(shù)如下表所示。9.8.5唯一化及其他集合邏輯
第九部分PART099.9線性代數(shù)模塊numpy.linalg模塊中有一組標(biāo)準(zhǔn)的矩陣分解運(yùn)算以及諸如逆和行列式之類的東西。例如,矩陣相乘,如果我們通過“*”對兩個(gè)數(shù)組相乘的話,得到的是一個(gè)元素級的積,而不是一個(gè)矩陣點(diǎn)積。9.9線性代數(shù)模塊NumPy中提供了一個(gè)用于矩陣乘法的dot()方法。arr_x=np.array([[1,2,3],[4,5,6]])arr_y=np.array([[1,2],[3,4],[5,6]])#等價(jià)于np.dot(arr_x,arr_y)arr_x.dot(arr_y)array([[22,28],
[49,64]])9.9線性代數(shù)模塊矩陣點(diǎn)積的條件是矩陣A的列數(shù)等于矩陣B的行數(shù),假設(shè)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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江中醫(yī)藥大學(xué)濱江學(xué)院《醫(yī)患溝通與技巧》2023-2024學(xué)年第二學(xué)期期末試卷
- 圖木舒克職業(yè)技術(shù)學(xué)院《學(xué)前教育史》2023-2024學(xué)年第二學(xué)期期末試卷
- 濰坊環(huán)境工程職業(yè)學(xué)院《科研方法論》2023-2024學(xué)年第二學(xué)期期末試卷
- 厚、薄膜混合集成電路及消費(fèi)類電路項(xiàng)目效益評估報(bào)告
- 浙江警官職業(yè)學(xué)院《地域史研究方法與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 河池廣西河池市環(huán)江縣招聘教師29人筆試歷年參考題庫附帶答案詳解
- 演藝導(dǎo)演合同范本
- 山西農(nóng)業(yè)大學(xué)《工程力學(xué)A1》2023-2024學(xué)年第二學(xué)期期末試卷
- 福州英華職業(yè)學(xué)院《簡筆畫與繪本》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘇州工藝美術(shù)職業(yè)技術(shù)學(xué)院《JAVA企業(yè)級開發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新部編版四年級下冊小學(xué)語文全冊課件PPT
- 高中人教物理選擇性必修一第3章第5節(jié)多普勒效應(yīng)課件
- 全套橋梁施工技術(shù)交底記錄
- 2021年山東省威海市中考語文真題(解析版)
- 主動脈夾層的護(hù)理-ppt課件
- 高新技術(shù)企業(yè)認(rèn)定申請書樣例與說明
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter6 Tree
- 高壓氧科工作總結(jié)高壓氧科個(gè)人年終總結(jié).doc
- 《政治學(xué)概論》教學(xué)大綱
- 橋梁缺陷與預(yù)防
- 食品生物化學(xué)習(xí)題謝達(dá)平(動態(tài))
評論
0/150
提交評論