版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《Python數(shù)據(jù)分析基礎(chǔ)教程(第2版)》教案《Python數(shù)據(jù)分析基礎(chǔ)教程(第2版)》人民郵電出版社 作者:鄭丹青課程基本信息課程名稱Python數(shù)據(jù)分析基礎(chǔ)教程授課班級(jí)授課課題名NumPy數(shù)組與矢量計(jì)算——NumPy概述計(jì)劃課時(shí)2課時(shí)授課時(shí)間第周第課時(shí)課型教學(xué)做一體化教學(xué)目標(biāo)了解NumPy和SciPy作用。掌握NumPy安裝與測(cè)試。掌握SciPy安裝與測(cè)試。理解NumPy的簡(jiǎn)單應(yīng)用。教學(xué)重點(diǎn)NumPy和SciPy作用。NumPy安裝與測(cè)試。SciPy安裝與測(cè)試。教學(xué)難點(diǎn)理解NumPy的簡(jiǎn)單應(yīng)用教法與學(xué)法教法:講授法、演示法;學(xué)法:探究學(xué)習(xí)、小組合作學(xué)習(xí)。教學(xué)過(guò)程【課前任務(wù)】自主學(xué)習(xí)NumPy安裝與測(cè)試。2、SciPy安裝與測(cè)試?!菊n中任務(wù)】分組討論針對(duì)NumPy、SciPy安裝中遇到問(wèn)題開(kāi)展小組討論,互幫互學(xué),解決軟件安裝中問(wèn)題。教師組織小組討論,并根據(jù)學(xué)生疑難問(wèn)題,統(tǒng)一進(jìn)行解答?!拘抡n講授】任務(wù)一:NumPy和SciPy作用知識(shí)點(diǎn)講解NumPy簡(jiǎn)介NumPy是一個(gè)開(kāi)源的Python科學(xué)計(jì)算庫(kù),它是一個(gè)由多維數(shù)組和用于處理數(shù)組的例程集合組成的庫(kù)。1.NumPy的基本功能如下。提供了一個(gè)具有矢量算術(shù)運(yùn)算和復(fù)雜廣播功能的快速且節(jié)省空間的多維數(shù)組對(duì)象ndarray。用于對(duì)數(shù)組執(zhí)行元素級(jí)計(jì)算以及直接對(duì)數(shù)組執(zhí)行數(shù)學(xué)運(yùn)算的函數(shù)。用于讀寫硬盤上基于數(shù)組的數(shù)據(jù)集的工具,以及用于操作內(nèi)存映射文件的工具。提供了線性代數(shù)、隨機(jī)數(shù)生成以及傅立葉變換功能。用于集成由C、C++、Fortran等語(yǔ)言編寫的代碼的工具。在數(shù)據(jù)分析方面,NumPy還可作為在算法之間傳遞數(shù)據(jù)的容器。2.在Python中使用NumPy的優(yōu)勢(shì)①在數(shù)值計(jì)算時(shí),使用NumPy能夠直接對(duì)數(shù)組和矩陣進(jìn)行操作。②NumPy中數(shù)組的存儲(chǔ)效率和輸入輸出性能均遠(yuǎn)遠(yuǎn)優(yōu)于Python中等價(jià)的基本數(shù)據(jù)結(jié)構(gòu)。③NumPy的大部分代碼都是用C語(yǔ)言寫成的,這使得NumPy比純Python代碼高效得多。④NumPy通常與SciPy(ScientificPython)和Matplotlib(繪圖庫(kù))一起使用。⑤NumPy是開(kāi)源的庫(kù)。SciPy簡(jiǎn)介SciPy是世界著名的Python開(kāi)源科學(xué)計(jì)算庫(kù),它是建立在NumPy基礎(chǔ)之上,增加了眾多的數(shù)學(xué)、科學(xué)以及工程計(jì)算中常用的庫(kù)函數(shù)。它增加的功能包括插值、積分、最優(yōu)化、統(tǒng)計(jì)、線性代數(shù)、傅里葉變換、圖像處理和常微分方程求解器等一些專用函數(shù)。學(xué)生自主提問(wèn),教師對(duì)疑難問(wèn)題進(jìn)行解答。任務(wù)二:NumPy的簡(jiǎn)單應(yīng)用:一維數(shù)組相加提出問(wèn)題在科學(xué)計(jì)算中,常常會(huì)遇到數(shù)組和矩陣的計(jì)算,如有兩個(gè)一維數(shù)組x和y,其中,x的值為0-10的整數(shù),y的值為0-10的整數(shù)的平方,需要計(jì)算x與y的一維數(shù)組相加。知識(shí)點(diǎn)講解1.利用Python循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)兩個(gè)一維數(shù)組相加的示例example4-12.利用NumPy實(shí)現(xiàn)兩個(gè)一維數(shù)組相加的示例example4-23.比較兩種方法的計(jì)算速度測(cè)試示例代碼抽答學(xué)生問(wèn)題,檢查學(xué)生學(xué)習(xí)效果【小結(jié)】NumPy和SciPy作用。NumPy和SciPy安裝與測(cè)試。NumPy的簡(jiǎn)單應(yīng)用?!菊n后作業(yè)】教材第4章簡(jiǎn)答題1?!窘虒W(xué)反思】課程基本信息課程名稱Python數(shù)據(jù)分析基礎(chǔ)教程授課班級(jí)授課課題名NumPy數(shù)組與矢量計(jì)算——NumPy數(shù)組對(duì)象計(jì)劃課時(shí)4課時(shí)授課時(shí)間第周第課時(shí)課型教學(xué)做一體化教學(xué)目標(biāo)掌握創(chuàng)建數(shù)組對(duì)象方法。掌握選取數(shù)組元素方法。了解數(shù)組的屬性。掌握NumPy的數(shù)據(jù)類型。教學(xué)重點(diǎn)創(chuàng)建數(shù)組對(duì)象方法。選取數(shù)組元素方法。教學(xué)難點(diǎn)NumPy的數(shù)據(jù)類型教法與學(xué)法教法:案例教學(xué)法;學(xué)法:探究學(xué)習(xí)、小組合作學(xué)習(xí)。教學(xué)過(guò)程【任務(wù)導(dǎo)入】分組討論:NumPy提供了哪些基本對(duì)象?NumPy數(shù)組一般是同質(zhì)的,這樣做好處是什么?【新課講授】任務(wù)一:創(chuàng)建數(shù)組對(duì)象知識(shí)點(diǎn)講解利用NumPy提供的array()函數(shù)可以創(chuàng)建一維或多維數(shù)組,其基本語(yǔ)法格式如下。numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)其中:object:array類型,表示想要?jiǎng)?chuàng)建數(shù)組,無(wú)默認(rèn)。dtype:string類型,表示數(shù)組所需要的數(shù)據(jù)類型,默認(rèn)值為None。ndmin:int類型,指定生成數(shù)組應(yīng)該具有的最小維數(shù),默認(rèn)值為None。在創(chuàng)建數(shù)組時(shí),object是唯一必要的參數(shù),其余參數(shù)均為默認(rèn)的可選參數(shù)。學(xué)生練習(xí)創(chuàng)建數(shù)組的example4-3任務(wù)二:選取數(shù)組元素和數(shù)組的屬性知識(shí)點(diǎn)講解創(chuàng)建數(shù)組后,選取數(shù)組中的某個(gè)特定元素的方法如下。數(shù)組名[m,n]其中m和n為數(shù)組元素下標(biāo)。注意,數(shù)組的下標(biāo)是從0開(kāi)始。例如在example4-3示例中,創(chuàng)建了一個(gè)二維數(shù)組arr2,arr2數(shù)組元素及與其對(duì)應(yīng)的位置如表4-1、表4-2所示。學(xué)生自主提問(wèn),教師對(duì)疑難問(wèn)題進(jìn)行解答。分組自主學(xué)習(xí)1、數(shù)組的屬性及說(shuō)明如表4-3所示2、數(shù)組的屬性應(yīng)用示例代碼抽答問(wèn)題、檢查學(xué)習(xí)效果任務(wù)三:創(chuàng)建數(shù)組的其他方法知識(shí)點(diǎn)講解1.使用arange()函數(shù)創(chuàng)建一維數(shù)組2.使用linspace()函數(shù)創(chuàng)建數(shù)組3.使用logspace()函數(shù)創(chuàng)建等比數(shù)列4.使用zeros()、eye()、identity()、diag()和ones()函數(shù)創(chuàng)建特殊數(shù)組5.使用asarray()函數(shù)創(chuàng)建數(shù)組6.使用empty()函數(shù)創(chuàng)建數(shù)組學(xué)生自主提問(wèn),教師對(duì)疑難問(wèn)題進(jìn)行解答。任務(wù)四:NumPy的數(shù)據(jù)類型知識(shí)點(diǎn)講解Python支持的數(shù)據(jù)類型有整型、浮點(diǎn)型以及復(fù)數(shù)型,但這些類型不足以滿足科學(xué)計(jì)算的需求,因此NumPy添加了很多其他的數(shù)據(jù)類型。在實(shí)際應(yīng)用中,為了提高計(jì)算結(jié)果的準(zhǔn)確度,需要使用不同精度的數(shù)據(jù)類型,并且不同的數(shù)據(jù)類型所占用的內(nèi)存空間也是不同的。在NumPy中,大部分?jǐn)?shù)據(jù)類型名是以數(shù)字結(jié)尾的,這個(gè)數(shù)字表示其在內(nèi)存中占用的位數(shù)。1.NumPy中支持的數(shù)據(jù)類型見(jiàn)表4-4NumPy的基本數(shù)據(jù)類型及描述2.?dāng)?shù)組的數(shù)據(jù)類型轉(zhuǎn)換數(shù)組有一個(gè)dtype屬性,通過(guò)該屬性可以查看數(shù)組的數(shù)據(jù)類型,方法是數(shù)組名.dtype。而數(shù)組的數(shù)據(jù)類型在創(chuàng)建數(shù)組時(shí)就已經(jīng)通過(guò)dtype參數(shù)確定了,如果想實(shí)現(xiàn)數(shù)組中數(shù)值類型的轉(zhuǎn)換可采用astype()函數(shù)。astype()函數(shù)的格式如下。數(shù)組名.astype(numpy.數(shù)據(jù)類型)3.自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型是一種異構(gòu)數(shù)據(jù)類型,可以將它看作是電子表格的標(biāo)題行的數(shù)據(jù)。例如,創(chuàng)建一個(gè)存儲(chǔ)產(chǎn)品價(jià)格信息的數(shù)據(jù)類型。其中,產(chǎn)品名稱是用字符串表示的長(zhǎng)度為50個(gè)字符,產(chǎn)品價(jià)格是用32位單精度浮點(diǎn)數(shù)表示。那么,使用自定義數(shù)據(jù)類型來(lái)創(chuàng)建數(shù)組的方法如下。(1)使用dtype創(chuàng)建自定義數(shù)據(jù)類型(2)查看數(shù)據(jù)類型,可直接查看或使用numpy.dtype()函數(shù)查看(3)使用array()函數(shù)創(chuàng)建數(shù)組時(shí),使用dtype指定數(shù)組的數(shù)據(jù)類型為pro_type(自定義數(shù)據(jù)類型)學(xué)生練習(xí)數(shù)組的數(shù)據(jù)類型轉(zhuǎn)換案例自定義數(shù)據(jù)類型案例【小結(jié)】創(chuàng)建數(shù)組對(duì)象方法。選取數(shù)組元素和數(shù)組的屬性。NumPy的數(shù)據(jù)類型?!菊n后作業(yè)】教材第4章的思考練習(xí)?!窘虒W(xué)反思】課程基本信息課程名稱Python數(shù)據(jù)分析基礎(chǔ)教程授課班級(jí)授課課題名NumPy數(shù)組與矢量計(jì)算——NumPy數(shù)組操作計(jì)劃課時(shí)4課時(shí)授課時(shí)間第周第課時(shí)課型教學(xué)做一體化教學(xué)目標(biāo)掌握數(shù)組的索引和切片掌握數(shù)組的其他操作掌握添加、刪除數(shù)組元素教學(xué)重點(diǎn)數(shù)組的索引和切片添加、刪除數(shù)組元素教學(xué)難點(diǎn)數(shù)組的其他操作教法與學(xué)法教法:案例教學(xué)法;學(xué)法:探究學(xué)習(xí)、小組合作學(xué)習(xí)。教學(xué)過(guò)程【任務(wù)導(dǎo)入】分組討論:在數(shù)據(jù)分析中,除了使用NumPy創(chuàng)建數(shù)組對(duì)象外,常用NumPy數(shù)組操作方法有哪些?【新課講授】任務(wù)一:數(shù)組的索引和切片知識(shí)點(diǎn)講解一維數(shù)組的索引與切片一維數(shù)組的操作類似于Python中列表(list)類型的操作。如:一維數(shù)組arr=[a0,a1,a2,a3,a4……,an]數(shù)組索引(下標(biāo))01234n(1)利用數(shù)組索引(下標(biāo))獲取指定元素獲取數(shù)組中指定元素的方法如下。數(shù)組名[索引(下標(biāo))]
例如,獲取數(shù)組arr中第4個(gè)元素a3用arr[3]即可。(2)數(shù)組的切片截取數(shù)組中某個(gè)范圍之間元素的方法如下。數(shù)組名[start:end:step]
其中,start表示截取數(shù)組中開(kāi)始元素的索引(下標(biāo)),end表示截取數(shù)組中結(jié)束元素的索引(下標(biāo)),但是不包括end索引(下標(biāo))所指定的元素,step表示步長(zhǎng)。例如,截取arr數(shù)組中第2個(gè)元素至第5個(gè)元素,包括第5個(gè)元素,則使用arr[1:5]。二維數(shù)組的索引與切片二維數(shù)組是由行和列組成,二維數(shù)組中的每一行相當(dāng)于一維數(shù)組。二維數(shù)組中元素的索引是由該元素所在的行下標(biāo)和列下標(biāo)組成,即由元素的行索引和列索引組成。如arr是二維數(shù)組,該二維數(shù)組元素用arr[行索引,列索引]表示,該二維數(shù)組中元素與索引的對(duì)應(yīng)關(guān)系如下。(1)利用二維數(shù)組的行索引和列索引獲取指定元素方法:數(shù)組名[行索引,列索引]
例如,獲取二維數(shù)組中第2行第2列的元素,用arr[1,1]即可。(2)二維數(shù)組的切片截取二維數(shù)組中某個(gè)區(qū)域之間元素的方法:數(shù)組名[rows_start:rows_end:rows_step,cols_start:cols_end:cols_step]
其中:rows_start:rows_end表示截取數(shù)組中元素的行索引范圍,cols_start:cols_end表示截取數(shù)組中元素的列索引范圍,但不包括rows_end行索引和cols_end列索引所指定的元素,rows_step表示行索引的步長(zhǎng),cols_step表示列索引的步長(zhǎng)。整數(shù)索引整數(shù)索引就是從兩個(gè)序列的對(duì)應(yīng)位置取出兩個(gè)整數(shù)來(lái)組成行下標(biāo)和列下標(biāo)。布爾值索引當(dāng)結(jié)果對(duì)象是布爾運(yùn)算(例如比較運(yùn)算符)的結(jié)果時(shí),將使用布爾值索引。學(xué)生練習(xí)example4-5、example4-6、example4-7。任務(wù)二:數(shù)組的其他操作知識(shí)點(diǎn)講解修改數(shù)組形狀1.用元組設(shè)置維度修改數(shù)組的形狀方法:數(shù)組名.shape=(x0,x1,x2…,xn)參數(shù)x0,..,xn表示數(shù)組中每個(gè)維度上的大小,例如arr.shape=(3,4)表示將arr數(shù)組修改成3行4列數(shù)組,利用該方法會(huì)改變?cè)瓟?shù)組arr的形狀。2.reshape()函數(shù)用reshape()函數(shù)修改數(shù)組的形狀方法:數(shù)組名.reshape(x0,x1,x2…,xn)
參數(shù)x0,…,xn表示數(shù)組中每個(gè)維度上的大小。例如arr.reshape(3,4)生成一個(gè)3行4列新數(shù)組,而原數(shù)組arr不會(huì)改變。如果指定的維度和數(shù)組的元素?cái)?shù)目不吻合,則函數(shù)將拋出異常。3.resize()函數(shù)該函數(shù)是返回指定大小的新數(shù)組。如果新數(shù)組的大小大于原數(shù)組的大小,則新數(shù)組中超出原數(shù)組中的元素用0填充,該函數(shù)修改數(shù)組形狀方法:數(shù)組名.resize(x0,x1,x2…,xn)參數(shù)x0,…,xn表示數(shù)組中每個(gè)維度上的大小。例如arr.resize(3,4)表示將arr數(shù)組修改成3行4列數(shù)組,原數(shù)組arr形狀改變。這種方法與用shape屬性修改數(shù)組的形狀相似。數(shù)組展平1.ravel()函數(shù)在NumPy中,可以使用ravel()函數(shù)將多維數(shù)組展平(即變成一維數(shù)組),展平數(shù)組元素的順序通常是“C風(fēng)格”的,就是以行為基準(zhǔn)。用ravel()函數(shù)展平數(shù)組的方法:數(shù)組名.ravel()例如arr.ravel()返回將arr數(shù)組展平成一維新數(shù)組視圖,原數(shù)組arr不改變。2.flatten()函數(shù)flatten()函數(shù)也是將多維數(shù)組展平,用flatten()函數(shù)展平數(shù)組的方法:數(shù)組名.flatten()例如arr.flatten()表示將arr數(shù)組展平成一維新數(shù)組,原數(shù)組arr不改變。數(shù)組轉(zhuǎn)置和軸對(duì)換1.transpose()函數(shù)使用transpose()函數(shù)可實(shí)現(xiàn)轉(zhuǎn)置給定數(shù)組的維度,并且返回?cái)?shù)組的1個(gè)視圖。使用transpose()函數(shù)的方法:numpy.transpose(arr)參數(shù)arr表示是要轉(zhuǎn)置的數(shù)組。例如arr是一個(gè)3行5列數(shù)組,numpy.transpose(arr)函數(shù)就會(huì)返回arr數(shù)組轉(zhuǎn)置為5行3列的數(shù)組視圖,而原數(shù)組arr不改變。2.轉(zhuǎn)置函數(shù).T該函數(shù)是屬于ndarray類,作用類似于numpy.transpose3.rollaxis()函數(shù)rollaxis()函數(shù)可實(shí)現(xiàn)向后滾動(dòng)特定的軸,直到一個(gè)特定位置。使用rollaxis()函數(shù)方法:numpy.rollaxis(arr,axis,start)其中參數(shù)arr表示數(shù)組,axis表示要向后滾動(dòng)的軸,其它軸的相對(duì)位置不會(huì)改變,start表示滾動(dòng)到特定位置,默認(rèn)為0,表示完整的滾動(dòng)。4.swapaxes()函數(shù)swapaxes()函數(shù)可實(shí)現(xiàn)交換數(shù)組的兩個(gè)軸。對(duì)于1.10之前的NumPy版本,會(huì)返回交換后數(shù)組的視圖。使用swapaxes()函數(shù)的方法:numpy.swapaxes(arr,axis1,axis2)參數(shù)arr表示數(shù)組,axis1表示對(duì)應(yīng)第1個(gè)軸的整數(shù),axis2表示對(duì)應(yīng)第2個(gè)軸的整數(shù)。數(shù)組的連接1.concatenate()函數(shù)concatenate()函數(shù)是用于沿指定軸連接相同形狀的兩個(gè)或多個(gè)數(shù)組。使用concatenate()函數(shù)的方法:numpy.concatenate((arr1,arr2,…,arrn),axis)參數(shù)arr1,arr2…arrn表示是相同維度的數(shù)組序列,axis表示沿著它連接數(shù)組的軸,默認(rèn)為0。2.stack()函數(shù)stack()函數(shù)能實(shí)現(xiàn)沿新軸連接數(shù)組序列。此功能添加自NumPy版本1.10.0。使用stack()函數(shù)的方法:numpy.stack(arrays,axis)參數(shù)arrays表示相同形狀的數(shù)組序列,axis表示返回?cái)?shù)組中的軸,輸入數(shù)組沿著它來(lái)堆疊。3.hstack()函數(shù)hstack()函數(shù)可通過(guò)堆疊來(lái)生成水平的單個(gè)數(shù)組。使用hstack()函數(shù)的方法:numpy.hstack(arrays)參數(shù)arrays表示相同形狀的數(shù)組序列。4.vstack()函數(shù)vstack()函數(shù)可通過(guò)堆疊來(lái)生成豎直的單個(gè)數(shù)組。使用vstack()函數(shù)的方法:numpy.vstack(arrays)參數(shù)arrays表示相同形狀的數(shù)組序列。數(shù)組的分割1.split()函數(shù)split()函數(shù)用于沿特定的軸將數(shù)組分割為子數(shù)組。使用split()函數(shù)的方法:numpy.split(arr,indices_or_sections,axis)參數(shù)arr表示被分割的數(shù)組;indices_or_sections表示將數(shù)組arr創(chuàng)建為大小相同的子數(shù)組的數(shù)量,可以為整數(shù),如果該參數(shù)是一維數(shù)組,則該參數(shù)表示在數(shù)組arr中的分割點(diǎn),函數(shù)將按照分割點(diǎn)來(lái)分割數(shù)組arr;axis表示返回?cái)?shù)組中的軸,默認(rèn)為0,表示豎直方向分割,1表示水平方向分割。2.hsplit()函數(shù)hsplit()函數(shù)是split()函數(shù)的特例,它用于將數(shù)組沿水平方向分割,即將一個(gè)數(shù)組按列分割為多個(gè)子數(shù)組。使用hsplit()函數(shù)的方法:numpy.hsplit(arr,indices_or_sections)參數(shù)arr表示被分割的數(shù)組;indices_or_sections表示將數(shù)組arr創(chuàng)建為大小相同的子數(shù)組的數(shù)量,如果此參數(shù)是一維數(shù)組,則該參數(shù)表示在數(shù)組arr中的分割點(diǎn),函數(shù)將按照分割點(diǎn)來(lái)分割數(shù)組arr。3.vsplit()函數(shù)vsplit()函數(shù)是split()函數(shù)的特例,它是將數(shù)組沿著豎直方向分割,即將一個(gè)數(shù)組按行分割為多個(gè)子數(shù)組。使用vsplit()函數(shù)的方法:numpy.vsplit(arr,indices_or_sections)參數(shù)arr表示被分割的數(shù)組;indices_or_sections表示將數(shù)組arr創(chuàng)建為大小相同的子數(shù)組的數(shù)量,如果此參數(shù)是一維數(shù)組,則該參數(shù)表示在數(shù)組arr中的分割點(diǎn),函數(shù)將按照分割點(diǎn)來(lái)分割數(shù)組arr。4.數(shù)組的分割示例example4-12數(shù)組轉(zhuǎn)換在NumPy中,將數(shù)組轉(zhuǎn)換成列表是用tolist()函數(shù),使用tolist()函數(shù)的方法:數(shù)組名.tolist()學(xué)生練習(xí)1.修改數(shù)組的形狀示例代碼example4-8.py。2.數(shù)組的展平示例代碼example4-9.py3.翻轉(zhuǎn)數(shù)組的示例代碼example4-10.py。4.數(shù)組的連接示例代碼example4-11.py。5.數(shù)組的分割示例example4-12.py任務(wù)三:添加刪除數(shù)組元素分組討論,自主學(xué)習(xí):append()函數(shù)insert()函數(shù)delete()函數(shù)學(xué)生練習(xí)append()函數(shù)的示例代碼example4-13.pyinsert()函數(shù)的示例代碼example4-14.pydelete()函數(shù)的示例代碼example4-15.py學(xué)生自主提問(wèn),教師對(duì)疑難問(wèn)題進(jìn)行解答。【小結(jié)】1.數(shù)組的索引和切片2.數(shù)組的其他操作3.添加刪除數(shù)組元素【課后作業(yè)】教材第四章的思考練習(xí)。【教學(xué)反思】課程基本信息課程名稱Python數(shù)據(jù)分析基礎(chǔ)教程授課班級(jí)授課課題名NumPy數(shù)組與矢量計(jì)算——NumPy數(shù)組矢量計(jì)算、矩陣、隨機(jī)數(shù)生成計(jì)劃課時(shí)4-6課時(shí)授課時(shí)間第周第課時(shí)課型教學(xué)做一體化教學(xué)目標(biāo)掌握數(shù)組運(yùn)算和通用函數(shù)掌握矩陣創(chuàng)建、計(jì)算及操作掌握隨機(jī)數(shù)生成教學(xué)重點(diǎn)1.數(shù)組運(yùn)算和通用函數(shù)2.隨機(jī)數(shù)生成教學(xué)難點(diǎn)矩陣創(chuàng)建、計(jì)算及操作教法與學(xué)法教法:案例教學(xué)法學(xué)法:探究學(xué)習(xí)、小組合作學(xué)習(xí)。教學(xué)過(guò)程【任務(wù)導(dǎo)入】分組討論:1.數(shù)組運(yùn)算包括哪些?【新課講授】任務(wù)一:NumPy數(shù)組矢量計(jì)算知識(shí)點(diǎn)講解一數(shù)組運(yùn)算在NumPy中,數(shù)組可以直接進(jìn)行加、減、乘、除、指數(shù)運(yùn)算、求倒數(shù)、取相反數(shù)、位運(yùn)算等運(yùn)算。1.相同形狀數(shù)組的運(yùn)算創(chuàng)建兩個(gè)相同形狀數(shù)組arr_a和arr_b,現(xiàn)將它們分別進(jìn)行加、減、乘、除、取相反數(shù)、平方和按位異或運(yùn)算,觀察其輸出結(jié)果。2.不同形狀數(shù)組的運(yùn)算(廣播機(jī)制)如果兩個(gè)數(shù)據(jù)的形狀(shape)不一致時(shí),低維數(shù)組會(huì)自動(dòng)將維度擴(kuò)充到與高維數(shù)組一致,然后再按元素逐個(gè)運(yùn)算,這就是數(shù)組的廣播機(jī)制。為了更好地使用廣播機(jī)制,需要遵循4個(gè)原則。示例代碼見(jiàn)教材。3.數(shù)組和標(biāo)量之間的運(yùn)算在NumPy中,數(shù)組和標(biāo)量之間的算術(shù)運(yùn)算就是將這個(gè)標(biāo)量值傳播到數(shù)組的各個(gè)元素,即將數(shù)組中的每個(gè)元素都與標(biāo)量進(jìn)行運(yùn)算。案例講解一示例代碼example4-16.py知識(shí)點(diǎn)講解二通用函數(shù)NumPy中的ufunc對(duì)象也稱為ufunc函數(shù),它包含了對(duì)數(shù)組進(jìn)行處理的通用函數(shù)。通用函數(shù)是針對(duì)ndarray數(shù)組對(duì)象執(zhí)行元素級(jí)運(yùn)算的函數(shù),即通用函數(shù)會(huì)對(duì)數(shù)組中的每一個(gè)元素值作用后產(chǎn)生新的元素值,并返回新的元素值組成的數(shù)組,因此,通用函數(shù)都是以NumPy數(shù)組作為輸出。常用的一元通用函數(shù)說(shuō)明見(jiàn)教材表4-6常用的二元通用函數(shù)說(shuō)明見(jiàn)教材表4-7 案例講解二示例代碼test4-1.py學(xué)生練習(xí)example4-16.pytest4-1.py任務(wù)二:NumPy矩陣創(chuàng)建、計(jì)算及操作知識(shí)點(diǎn)講解一NumPy中的矩陣對(duì)象為matrix,它包含有矩陣的數(shù)據(jù)處理,矩陣計(jì)算,轉(zhuǎn)置,可逆性等功能。matrix是ndarray的子類,矩陣對(duì)象是繼承自NumPy數(shù)組對(duì)象的二維數(shù)組對(duì)象,因此,矩陣會(huì)含有數(shù)組的所有數(shù)據(jù)屬性和方法。但是,矩陣與數(shù)組還是有一些重要的區(qū)別。(有關(guān)區(qū)別可參見(jiàn)教材)1.矩陣的創(chuàng)建在NumPy中,使用mat()、matrix()以及bmat()函數(shù)創(chuàng)建矩陣。(1)使用字符串創(chuàng)建矩陣在mat()函數(shù)中輸入一個(gè)Matlab風(fēng)格的字符串,該字符串以空格分隔列,以分號(hào)分隔行。如numpy.mat(‘123;456;789’),可創(chuàng)建一個(gè)3行3列矩陣,矩陣中元素為整數(shù)。(2)使用嵌套序列創(chuàng)建矩陣在mat()函數(shù)中輸入嵌套序列,如numpy.mat([[2,4,6,8],[1.0,3,5,7.0]]),可創(chuàng)建一個(gè)2行4列的矩陣,矩陣中的元素為浮點(diǎn)數(shù)。(3)使用一個(gè)數(shù)組創(chuàng)建矩陣在mat()函數(shù)中輸入數(shù)組,如numpy.mat(numpy.arange(9).reshape(3,3)),可創(chuàng)建一個(gè)3行3列的矩陣,矩陣中的元素為整數(shù)。(4)使用matrix()函數(shù)創(chuàng)建矩陣matrix()函數(shù)可以將字符串、嵌套序列、數(shù)組和matrix轉(zhuǎn)換成矩陣。其函數(shù)格式:matrix(data,dtype=None,copy=True(5)使用bmat()函數(shù)創(chuàng)建矩陣如果想將小矩陣組合成大矩陣,在NumPy中,可以使用bmat分塊(blockmatrix)矩陣函數(shù)實(shí)現(xiàn)。其函數(shù)格式:bmat(obj,ldict=None,gdict=None)其中,obj為matrix。參數(shù)ldict和gdict為None。案例講解一example4-17知識(shí)點(diǎn)講解二2.矩陣的計(jì)算及操作在NumPy中,矩陣的計(jì)算是針對(duì)整個(gè)矩陣中的每個(gè)元素進(jìn)行的,不需要使用for循環(huán),而且運(yùn)算效率更高。在矩陣的加、減、除法運(yùn)算時(shí),只有相同的行數(shù)和列數(shù)矩陣才能相互進(jìn)行計(jì)算,否則會(huì)拋出程序異常。
矩陣的乘法計(jì)算有計(jì)算矢量積和計(jì)算數(shù)量積兩種方式,如果計(jì)算矢量積,則運(yùn)算符采用星號(hào)(*),并且星號(hào)左邊矩陣的列數(shù)要與星號(hào)右邊矩陣的行相等,運(yùn)算結(jié)果是矩陣中對(duì)應(yīng)元素相乘的累加和。如果計(jì)算數(shù)量積,也稱為矩陣的點(diǎn)乘操作,則使用multiply函數(shù)。矩陣常用的操作有矩陣轉(zhuǎn)置、索引取值、求矩陣的行列數(shù)、排序和將列表轉(zhuǎn)換成矩陣等。案例講解二矩陣計(jì)算及操作示例代碼example4-18.py。學(xué)生自主提問(wèn),教師對(duì)疑難問(wèn)題進(jìn)行解答。任務(wù)三:隨機(jī)數(shù)的生成知識(shí)點(diǎn)講解利用NumPy中的random模塊生成隨機(jī)數(shù)。numpy.random模塊提供了
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)學(xué)生學(xué)術(shù)交流制度
- 養(yǎng)老院工作人員著裝規(guī)范制度
- 企業(yè)內(nèi)部會(huì)議管理制度
- 公共交通乘客服務(wù)管理制度
- 2026年企業(yè)內(nèi)部管理能力測(cè)試題目
- 2026年商務(wù)英語(yǔ)中級(jí)認(rèn)證同步自測(cè)與提升練習(xí)題
- 2026年歷史學(xué)科知識(shí)重點(diǎn)試題及答案解析
- 2026年汽車行業(yè)候選人汽車安全性能測(cè)試分析
- 2026年法律知識(shí)測(cè)試題合同法與知識(shí)產(chǎn)權(quán)法要點(diǎn)題庫(kù)
- 2026年海報(bào)制作服務(wù)合同(高清·噴繪版)
- 大廈無(wú)償劃轉(zhuǎn)協(xié)議書(shū)
- 貿(mào)易公司組織架構(gòu)與部門職責(zé)一覽表
- 2025年加油站培訓(xùn)數(shù)質(zhì)量標(biāo)準(zhǔn)課件
- 《電梯基本結(jié)構(gòu)》課件
- 兒童發(fā)育遲緩的早期干預(yù)與教育策略
- 刀模管理制度
- 揮發(fā)性有機(jī)物(VOCs)執(zhí)法監(jiān)測(cè)能力建設(shè)項(xiàng)目可行性實(shí)施方案
- 工程施工月報(bào)表
- 鍋爐外部檢驗(yàn)報(bào)告
- GB/T 3098.6-2023緊固件機(jī)械性能不銹鋼螺栓、螺釘和螺柱
- 音標(biāo)拼讀練習(xí)(彩色版)
評(píng)論
0/150
提交評(píng)論