




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章科學計算庫NumPy《Python數(shù)據(jù)分析與應用:從數(shù)據(jù)獲取到可視化(第2版)》學習目標/Target
了解NumPy數(shù)組的相關概念,能夠說出什么是數(shù)組、維度、軸和秩
熟悉NumPy數(shù)組的屬性,能夠歸納ndim和shape屬性的作用
掌握數(shù)據(jù)的創(chuàng)建方式,能夠靈活創(chuàng)建一維數(shù)組和二維數(shù)組
掌握數(shù)組的數(shù)據(jù)類型,能夠查看與轉換數(shù)組的數(shù)據(jù)類型學習目標/Target
掌握數(shù)組的索引和切片操作,能夠靈活通過不同形式的索引獲取數(shù)組元素
掌握數(shù)組的算術運算,能夠實現(xiàn)數(shù)組與數(shù)組或數(shù)組與標量的算術運算
掌握數(shù)組通用函數(shù),能夠使用一元通用函數(shù)和二元通用函數(shù)進行數(shù)學運算
掌握數(shù)組的重塑操作,能夠通過reshape()方法實現(xiàn)數(shù)組的重塑操作學習目標/Target
掌握數(shù)組的轉置操作,能夠通過T屬性或transpose()實現(xiàn)數(shù)組的轉置操作
掌握數(shù)組的其他操作,能夠實現(xiàn)數(shù)組的條件邏輯、統(tǒng)計運算、排序操作
熟悉線性代數(shù)模塊,能夠通過linalg模塊的功能完成矩陣操作
掌握隨機數(shù)模塊,能夠通過random模塊的功能生成包含隨機數(shù)的數(shù)組章節(jié)概述/SummaryNumPy作為高性能科學計算和數(shù)據(jù)分析的基礎包,它是本書數(shù)據(jù)分析相關庫的基礎,掌握NumPy的功能及其用法,將有助于后續(xù)其他數(shù)據(jù)分析相關庫的學習。接下來,本章將帶領大家學習NumPy的基本用法。目錄/Contents01020304認識NumPy數(shù)組創(chuàng)建數(shù)組數(shù)組的數(shù)據(jù)類型數(shù)組的索引和切片目錄/Contents05060708數(shù)組的算術運算通用函數(shù)數(shù)組的重塑與轉置數(shù)組的其他操作目錄/Contents091011線性代數(shù)模塊隨機數(shù)模塊案例:計算股票收益率和波動率認識NumPy數(shù)組2.12.1.1
NumPy數(shù)組的相關概念了解NumPy數(shù)組的相關概念,能夠說出什么是數(shù)組、維度、軸和秩學習目標2.1.1
NumPy數(shù)組的相關概念數(shù)組相關概念數(shù)組維度軸秩2.1.1
NumPy數(shù)組的相關概念數(shù)組數(shù)組是編程語言中重要且復雜的數(shù)據(jù)結構,它是由相同類型元素按照一定的順序排列的集合。1數(shù)組具有固定的大小,不會動態(tài)地增長。2數(shù)組中所有元素必須是相同的類型3數(shù)組操作大量數(shù)據(jù)的執(zhí)行效率更高,代碼量更少2.1.1
NumPy數(shù)組的相關概念維度維度又稱為維數(shù),在數(shù)學領域中是指描述對象狀態(tài)所需的獨立參數(shù)的數(shù)目。零維是一個無限小的點,沒有長度;一維是一條無限長的直線,只有長度;二維是一個平面,由長度和寬度組成;三維是一個立方體,由長度、寬度和高度組成。2.1.1
NumPy數(shù)組的相關概念維度維度為k的數(shù)組通常被稱為k維數(shù)組。數(shù)組按維度可以分為一維數(shù)組、二維數(shù)組、多維數(shù)組,常接觸的多維數(shù)組是三維數(shù)組?!?/p>
三維數(shù)組被認為元素是二維數(shù)組的數(shù)組,二維數(shù)組被認為元素是一維數(shù)組的數(shù)組。2.1.1
NumPy數(shù)組的相關概念軸軸(axis)是NumPy數(shù)組中十分重要的概念,它其實就代表維度。數(shù)組的維度不同,它對應的軸的數(shù)量也不同。一維數(shù)組只有一個軸,軸的編號為0;二維數(shù)組有沿行方向和列方向的兩個軸,其中沿行方向的軸編號為0,沿列方向的軸編號為1;三維數(shù)組有沿著行、列方向,以及由行列組成的平面的三個軸,這三個軸的編號分別為0、1、2。2.1.1
NumPy數(shù)組的相關概念秩秩是軸的個數(shù),例如,一維數(shù)組只有一個軸,那么該一維數(shù)組的秩就是1。2.1.2
NumPy數(shù)組的屬性熟悉NumPy數(shù)組的屬性,能夠歸納ndim和shape屬性的作用學習目標2.1.2
NumPy數(shù)組的屬性ndarray對象NumPy中最重要的一個特點就是其N維數(shù)組對象,即ndarray(別名array)對象,該對象具有矢量算術能力和復雜的廣播能力,可以執(zhí)行一些科學計算。不同于Python內置的數(shù)組類型,ndarray對象擁有對高維數(shù)組的處理能力,這也是數(shù)值計算中缺一不可的重要特性。2.1.2
NumPy數(shù)組的屬性ndarray對象的常用屬性屬性說明ndarray.ndim數(shù)組軸的個數(shù)ndarray.shape數(shù)組維度的元組,元組中各個元素表示每個維度上數(shù)組的大小ndarray.size數(shù)組元素的總個數(shù),等于shape屬性中元組元素的乘積ndarray.dtype描述數(shù)組中元素類型的對象,既可以使用標準的Python類型創(chuàng)建或指定,也可以使用NumPy特有的數(shù)據(jù)類型來指定ndarray.itemsize數(shù)組中每個元素占用的內存大小,單位為字節(jié)。2.1.2
NumPy數(shù)組的屬性ndarray對象的常用屬性屬性說明ndarray.ndim數(shù)組軸的個數(shù)ndarray.shape數(shù)組維度的元組,元組中各個元素表示每個維度上數(shù)組的大小ndarray.size數(shù)組元素的總個數(shù),等于shape屬性中元組元素的乘積ndarray.dtype描述數(shù)組中元素類型的對象,既可以使用標準的Python類型創(chuàng)建或指定,也可以使用NumPy特有的數(shù)據(jù)類型來指定ndarray.itemsize數(shù)組中每個元素占用的內存大小,單位為字節(jié)。shape屬性的值是一個元組,元組里面有多少個元素取決于數(shù)組的維度。2.1.2
NumPy數(shù)組的屬性數(shù)組屬性示意圖一維數(shù)組二維數(shù)組三維數(shù)組創(chuàng)建數(shù)組2.22.2
創(chuàng)建數(shù)組掌握數(shù)據(jù)的創(chuàng)建方式,能夠靈活創(chuàng)建一維數(shù)組和二維數(shù)組學習目標2.2
創(chuàng)建數(shù)組創(chuàng)建數(shù)組的基本方式NumPy中提供了多種創(chuàng)建數(shù)組的方式,其中最基本的方式就是通過array()函數(shù)創(chuàng)建數(shù)組,在使用該函數(shù)時直接傳入列表或元組即可。創(chuàng)建一維數(shù)組importnumpyasnparr1d=np.array([1,2,3])創(chuàng)建二維數(shù)組arr2d=np.array([[1,2,3],[4,5,6]])創(chuàng)建三維數(shù)組arr3d=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])2.2
創(chuàng)建數(shù)組創(chuàng)建數(shù)組的基本方式三維數(shù)組的內容布局方式2.2
創(chuàng)建數(shù)組創(chuàng)建數(shù)組的其他方式第1種:通過zeros()函數(shù)可以創(chuàng)建元素值都是0的數(shù)組。np.zeros((3,3))第2種:通過ones()函數(shù)可以創(chuàng)建元素值都為1的數(shù)組。np.ones((3,3))2.2
創(chuàng)建數(shù)組創(chuàng)建數(shù)組的其他方式第3種:通過empty()函數(shù)創(chuàng)建一個新的數(shù)組,該數(shù)組只分配了內存空間,它里面填充的元素都是隨機的。np.empty((3,3))第4種:通過arange()函數(shù)可以創(chuàng)建一個等差數(shù)組,它的功能類似于range(),只不過arange()函數(shù)返回的結果是一維數(shù)組,而不是列表。np.arange(1,20,5)2.2
創(chuàng)建數(shù)組創(chuàng)建數(shù)組的其他方式第5種:通過linspace()函數(shù)也可以創(chuàng)建一個等差數(shù)組,不同于arange()函數(shù),linspace()函數(shù)需要指定數(shù)組中元素的數(shù)量,而不需要指定步長。np.empty((3,3))2.2
創(chuàng)建數(shù)組指定數(shù)組元素的類型在使用前面介紹的函數(shù)創(chuàng)建數(shù)組時,可以通過dtype參數(shù)顯式地指明元素的類型。np.array([1,2,3],dtype=np.float32)np.ones((3,3),dtype='int32')傳入“模塊名.類型”傳入一個包含類型的字符串2.2
創(chuàng)建數(shù)組指定數(shù)組元素的類型大家可能注意到,數(shù)組中有些元素的后面有一個小數(shù)點,而有些元素后面沒有小數(shù)點,比如1和1.,之所以出現(xiàn)這種情況是因為元素的數(shù)據(jù)類型不同所導致的。數(shù)組的數(shù)據(jù)類型2.32.3.1
查看數(shù)據(jù)類型掌握數(shù)組的數(shù)據(jù)類型,能夠通過name屬性查看數(shù)組的數(shù)據(jù)類型學習目標2.3.1
查看數(shù)據(jù)類型數(shù)據(jù)類型查看方式如果要獲取數(shù)組中元素數(shù)據(jù)類型的名稱,則需要先通過數(shù)組訪問dtype屬性得到numpy.dtype類型的對象,再通過該對象訪問name屬性進行獲取。arr_one=np.array([[1,2,3],[4,5,6]])arr_one.dtype.nameint322.3.1
查看數(shù)據(jù)類型數(shù)據(jù)類型命名方式從數(shù)據(jù)類型的命名方式可以看出,NumPy的數(shù)據(jù)類型是由一個類型名和元素位長的數(shù)字組成。int32類型名元素位長的數(shù)字2.3.1
查看數(shù)據(jù)類型注意事項如果在創(chuàng)建數(shù)組時,沒有顯式地指明數(shù)據(jù)的類型,那么解釋器會根據(jù)列表或元組中元素的類型推導出來。默認情況下,通過zeros()、ones()、empty()函數(shù)創(chuàng)建的數(shù)組中元素的數(shù)據(jù)類型為float64。2.3.1
查看數(shù)據(jù)類型常用數(shù)據(jù)類型數(shù)據(jù)類型說明簡寫bool布爾類型,值為True或Falsebint8、uint8有符號和無符號的8位整數(shù)i或uint16、uint16有符號和無符號的16位整數(shù)i2或u2int32、uint32有符號和無符號的32位整數(shù)i4或u4int64、uint64有符號和無符號的64位整數(shù)i8或u8float16半精度浮點數(shù)(16位,其中正負號1位,指數(shù)5位,精度10位)f22.3.1
查看數(shù)據(jù)類型數(shù)據(jù)類型說明簡寫float32單精度浮點數(shù)(32位,其中正負號1位,指數(shù)8位,精度23位)f4float64雙精度浮點數(shù)(64位,其中正負號1位,指數(shù)11位,精度52位)f8complex64復數(shù),分別用兩個32位浮點數(shù)表示實部和虛部c8complex128復數(shù),分別用兩個64位浮點數(shù)表示實部和虛部c16object_Python對象Ostring_固定長度的字符串類型S常用數(shù)據(jù)類型2.3.2
轉換數(shù)據(jù)類型掌握數(shù)據(jù)類型的轉換方式,能夠通過astype()方法轉換數(shù)組的數(shù)據(jù)類型學習目標2.3.2
轉換數(shù)據(jù)類型NumPy中提供了astype()方法可以將數(shù)組中元素的數(shù)據(jù)類型轉換其他的數(shù)據(jù)類型。整數(shù)轉換為浮點數(shù)data=np.array([[1,2,3],[4,5,6]])float_data=data.astype(np.float32)float_浮點數(shù)轉換為整數(shù)float_data=np.array([1.2,2.9,3.5])int_data=float_data.astype(32)int_data字符串轉換為整數(shù)str_data=np.array(['1','2','3'])int_data=str_data.astype(64)int_data數(shù)組的索引和切片2.42.4.1
數(shù)組的索引方式熟悉數(shù)組的索引方式,能夠歸納一維數(shù)組和二維數(shù)組的索引方式學習目標2.4.1
數(shù)組的索引方式數(shù)組是通過索引的方式標記元素的位置,數(shù)組的類型不同,索引方式也會有一些區(qū)別。2.4.1
數(shù)組的索引方式一維數(shù)組的索引方式每個元素對應兩種索引,分別是正向索引和反向索引。正向索引從左向右依次遞增,反向索引從右向左依次遞減。2.4.1
數(shù)組的索引方式二維數(shù)組的索引方式每個元素對應行索引和列索引,其中行索引和列索引可以是正向索引或反向索引。2.4.2
整數(shù)索引和切片掌握整數(shù)索引和切片的使用,能夠熟練通過整數(shù)索引和切片獲取數(shù)組的元素學習目標2.4.2
整數(shù)索引和切片NumPy中可以通過整數(shù)索引和切片訪問和修改數(shù)組中的元素,數(shù)組的維度不同,整數(shù)索引和切片的用法也會有所不同。對于一維數(shù)組來說,整數(shù)索引和切片的用法與Python列表中索引和切片的用法相同;對于二維數(shù)組來說,整數(shù)索引和切片的用法要復雜一些。2.4.2
整數(shù)索引和切片索引的基本用法如果希望獲取二維數(shù)組的一行元素,則可以通過“數(shù)組[行索引]”的形式實現(xiàn)。arr2d=np.array([[1,6,11,16,21],[2,7,12,17,22],[3,8,13,18,23],[4,9,14,19,24],[5,10,15,20,25]])arr2d[2]如果我們想獲取二維數(shù)組的單個元素,則需要通過“數(shù)組[行索引,列索引]”的形式實現(xiàn)。arr2d[2,1]2.4.2
整數(shù)索引和切片切片的基本用法如果希望獲取二維數(shù)組的多行元素,則可以通過“數(shù)組[行索引的切片]”的形式實現(xiàn)。arr2d[:2]2.4.2
整數(shù)索引和切片切片的基本用法arr2d[:2,:2]如果希望獲取二維數(shù)組的部分元素,則可以通過“數(shù)組[行索引的切片,列索引的切片]”實現(xiàn)。2.4.2
整數(shù)索引和切片索引與切片的混合用法arr2d[:,2]我們也可以混合使用切片與整數(shù)索引,通過這種方式訪問二維數(shù)組的部分元素。2.4.3
花式索引掌握花式索引的使用,能夠熟練通過花式索引獲取數(shù)組的元素學習目標2.4.3
花式索引花式索引是NumPy的一個術語,是指用整數(shù)數(shù)組或整數(shù)列表作為索引。概念若花式索引操作的目標對象是一維數(shù)組,則會把花式索引的每個整數(shù)作為索引,通過索引獲取相應位置的元素。若花式索引操作的目標對象是二維數(shù)組,則通過花式索引獲取的結果是一行或多行元素。基本用法2.4.3
花式索引示例importnumpyasnparr=np.array([10,6,5,11,18,16,9,0,3,20])
arr[[0,1,5]]
106161.
使用花式索引操作一維數(shù)組2.4.3
花式索引arr2d[[1,4]]示例2.
使用花式索引操作二維數(shù)組2.4.3
花式索引arr2d[[1,4],[2,3]]如果想要訪問二維數(shù)組中的部分元素,而不是整行元素,則需要通過兩個花式索引完成,其中第一個花式索引中的整數(shù)會被作為行索引,第二個花式索引中的整數(shù)會被作為列索引。示例2.
使用花式索引操作二維數(shù)組2.4.3
花式索引注意事項當使用兩個花式索引訪問二維數(shù)組時,兩個花式索引對應數(shù)組或列表的長度是相等的,并且長度不能超過二維數(shù)組中相應軸上的元素數(shù)量,否則會出現(xiàn)索引異常。2.4.4
布爾索引掌握布爾索引的使用,能夠熟練通過布爾索引獲取數(shù)組中符合條件的的元素學習目標2.4.4
布爾索引布爾索引指的是將一個布爾數(shù)組或布爾列表作為數(shù)組索引。概念當使用布爾索引訪問一維數(shù)組時,會將一維數(shù)組中與布爾數(shù)組或布爾列表位置相同的元素進行匹配,并返回布爾數(shù)組或布爾列表中與True位置對應的元素?;居梅ā紶枖?shù)組或布爾列表的長度必須與被索引軸的長度一致。※布爾數(shù)組可以是自己手動創(chuàng)建的,也可以是數(shù)組與某個數(shù)通過比較運算符或邏輯運算符進行運算后的結果。數(shù)組的算術運算2.52.5.1
形狀相同的數(shù)組間的算術運算掌握形狀相同的數(shù)組的算術運算,能夠實現(xiàn)形狀相同的數(shù)組的算術運算學習目標2.5.1
形狀相同的數(shù)組間的算術運算在NumPy中,形狀相同的數(shù)組之間進行任何算術運算時都會應用到元素級,即將位置相同的元素進行算術運算,所得的運算結果組成一個新的數(shù)組。2.5.2
形狀不同的數(shù)組間的算術運算掌握形狀不同的數(shù)組的算術運算,能夠實現(xiàn)形狀不同的數(shù)組的算術運算學習目標2.5.2
形狀不同的數(shù)組間的算術運算在NumPy中,形狀不同的數(shù)組在執(zhí)行算術計算時可能會觸發(fā)廣播機制,該機制會對參與運算的數(shù)組進行擴展,使擴展后的數(shù)組具有相同的形狀,這樣就可以對數(shù)組進行算術運算了。不過,并非所有的數(shù)組進行算術運算都會觸發(fā)廣播機制,這主要取決于數(shù)組的形狀是否兼容。什么是形狀兼容呢?2.5.2
形狀不同的數(shù)組間的算術運算形狀兼容以兩個數(shù)組為例,這兩個數(shù)組的形狀右對齊,之后沿著從右向左的順序逐個比較同一緯度是否滿足以下任意一種情況:(1)維度相等。(2)有一方維度為1。如果數(shù)組的形狀的每個維度都滿足上述任意一種情況,說明兩個數(shù)組的形狀兼容。2.5.2
形狀不同的數(shù)組間的算術運算形狀兼容示例A(2darray):5x4
B(1darray):4
Result(2darray):5x4C(4darray):8x1x6x1D(3darray):7x1x5Result(4darray):8x7x6x5維度相等有一方維度為12.5.2
形狀不同的數(shù)組間的算術運算廣播機制2.5.3
數(shù)組與標量的算術運算掌握數(shù)組與標量的算術運算,能夠實現(xiàn)數(shù)組與標量的算術運算學習目標2.5.3
數(shù)組與標量的算術運算形狀相同的數(shù)組之間的任何算術運算都會應用到各元素。同樣地,數(shù)組與標量執(zhí)行算術運算時也會將標量應用到各元素,以方便各元素與標量直接相加、相減、相乘、相除等操作。數(shù)組與標量執(zhí)行算術運算后,會產(chǎn)生一個與數(shù)組形狀相同的新數(shù)組,新數(shù)組中每個元素的值分別是原數(shù)組中每個元素與標量算術運算后得到的結果。通用函數(shù)2.62.6
通用函數(shù)掌握數(shù)組的通用函數(shù),能夠熟練地使用一元通用函數(shù)和二元通用函數(shù)進行數(shù)學運算學習目標2.6
通用函數(shù)通用函數(shù)是一些針對ndarray對象中的逐個元素進行運算的函數(shù),這些函數(shù)都會產(chǎn)生一個新的數(shù)組。通常情況下,我們將接收一個數(shù)組參數(shù)的函數(shù)稱為一元通用函數(shù),接收兩個數(shù)組參數(shù)的函數(shù)稱為二元通用函數(shù)。2.6
通用函數(shù)常見一元通用函數(shù)函數(shù)說明abs(x)計算數(shù)組x中各元素的絕對值,元素值可以是整數(shù)、浮點數(shù)或復數(shù)fabs(x)計算數(shù)組x中各元素的絕對值,絕對值都是浮點數(shù)sqrt(x)計算數(shù)組x中各元素的平方根square(x)計算數(shù)組x中各元素的平方exp(x)計算數(shù)組x中各元素的指數(shù)log(x)計算數(shù)組x中各元素e為底數(shù)的對數(shù)log10(x)計算數(shù)組x中各元素10為底數(shù)的對數(shù)log2(x)計算數(shù)組x中各元素2為底數(shù)的對數(shù)sign(x)返回數(shù)組x中各元素的符號值,包括1、0、-1,其中1表示正數(shù),-1表示負數(shù)2.6
通用函數(shù)常見一元通用函數(shù)函數(shù)說明ceil(x)計算數(shù)組x中各元素的ceilling值,即大于或等于該值的最小整數(shù)floor(x)計算數(shù)組x中各元素的floor值,即小于等于該值的最大整數(shù)rint(x)將數(shù)組x中各元素四舍五入到的整數(shù)modf(x)將數(shù)組x中各元素的小數(shù)部分和整數(shù)部分以兩個獨立數(shù)組的形式返回isnan(x)判斷數(shù)組x中各元素的值是否為NaNisfinite(x)返回表示數(shù)組x中各元素是否有限的布爾型數(shù)組isinf(x)返回表示數(shù)組x中各元素是否無限的布爾型數(shù)組sin(x)計算數(shù)組x中各元素的正弦值sinh(x)計算數(shù)組x中各元素的雙曲正弦值2.6
通用函數(shù)常見一元通用函數(shù)函數(shù)說明cos(x)計算數(shù)組x中各元素的余弦值cosh(x)計算數(shù)組x中各元素的雙曲余弦值tan(x)計算數(shù)組x中各元素的正切值tanh(x)計算數(shù)組x中各元素的雙曲正切值arccos(x)計算數(shù)組x中各元素的反余弦值arccosh(x)計算數(shù)組x中各元素的反雙曲余弦值arcsin(x)計算數(shù)組x中各元素的反正弦值diff()計算沿給定軸的n階離散差,返回一個由相鄰元素的差值構成的數(shù)組std(x)計算數(shù)組x中各元素的標準差2.6
通用函數(shù)常見二元通用函數(shù)函數(shù)說明add(x1,
x2)將數(shù)組x1和x2中位置對應的元素相加,相當于x1+x2subtract(x1,
x2)將數(shù)組x1和x2中位置對應的元素相減,相當于x1-x2multiply(x1,
x2)將數(shù)組x1和x2中位置對應的元素相乘,相當于x1*x2divide(x1,
x2)將數(shù)組x1和x2中位置對應的元素相除,相當于x1/x2floor_divide(x1,
x2)將數(shù)組x1和x2中位置對應的元素整除,相當于x1//x2maximum(x1,
x2)返回數(shù)組x1和x2中位置對應的元素的最大值minimum(x1,
x2)返回數(shù)組x1和x2中位置對應的元素的最小值mod(x1,
x2)返回數(shù)組x1和x2中位置對應的元素求模后的結果,相當于x1%x2copysign(x1,
x2)將數(shù)組
x2中的元素的符號賦值給數(shù)組x1中位置對應的元素2.6
通用函數(shù)常見二元通用函數(shù)函數(shù)說明greater(x1,
x2)比較數(shù)組x1的元素是否大于x2的元素,相當于x1>x2greater_equal(x1,
x2)比較數(shù)組x1的元素是否大于或等于x2的元素,相當于x1>=x2less(x1,
x2)比較數(shù)組x1的元素是否小于x2的元素,相當于x1<x2less_equal(x1,
x2)比較數(shù)組x1的元素是否小于或等于x2的元素,相當于x1<=x2equal(x1,
x2)比較數(shù)組x1的元素是否等于x2的元素,相當于x1==x2not_equal(x1,
x2)比較數(shù)組x1的元素是否不等于x2的元素,相當于x1!=x2logical_and(x1,
x2)將數(shù)組x1和x2進行邏輯與運算,相當于x1&x2logical_or(x1,
x2)將數(shù)組x1和x2進行邏輯或運算,相當于x1|x2數(shù)組的重塑與轉置2.72.7.1
數(shù)組的重塑掌握數(shù)組的重塑操作,能夠通過reshape()方法實現(xiàn)數(shù)組的重塑操作學習目標2.7.1
數(shù)組的重塑數(shù)組的重塑是指重新將數(shù)組的形狀變成指定的形狀。概念重塑前后數(shù)組中元素的總數(shù)量是不變的。數(shù)組新形狀應與原始形狀兼容,也就是說新形狀的行數(shù)
新形狀的列數(shù)=原始形狀的行數(shù)
原始形狀的列數(shù)。特點2.7.1
數(shù)組的重塑NumPy中提供了重塑數(shù)組的reshape()方法,該方法既可以改變具有相同維度的數(shù)組形狀,又可以改變不同維度的數(shù)組形狀。方法一維數(shù)組重塑為二維數(shù)組array_1d=np.arange(1,13)print('原數(shù)組的形狀:'+str(array_1d.shape))array_2d=array_1d.reshape((6,2))print('新數(shù)組的形狀:'+str(array_2d.shape))二維數(shù)組重塑為二維數(shù)組new_array_2d=array_2d.reshape((3,4))print('新數(shù)組的形狀:'+str(new_array_2d.shape))print(new_array_2d)2.7.2
數(shù)組的轉置掌握數(shù)組的轉置操作,能夠通過T屬性或transpose()方法實現(xiàn)數(shù)組的轉置操作學習目標2.7.2
數(shù)組的轉置通過T屬性實現(xiàn)數(shù)組的轉置操作通過transpose()方法實現(xiàn)數(shù)組的轉置操作方式一:方式二:數(shù)組轉置的方式2.7.2
數(shù)組的轉置T屬性T屬性是最簡單的轉置方式,它會互換兩個軸方向上的元素。arr=np.arange(12).reshape(3,4)arr.Tarray([[0,1,2,3],[4,5,6,7],[8,9,10,11]])array([[0,4,8],[1,5,9],[2,6,10],[3,7,11]])2.7.2
數(shù)組的轉置transpose()方法如果希望對兩個以上的軸上的元素進行轉置,則可以通過transpose()方法實現(xiàn)。transpose()方法需要接收一個由軸編號構成的元組,返回一個按軸編號互換后的新數(shù)組。arr=np.arange(24).reshape(
(2,3,4))arr.transpose((0,1,2))
array([[[0,1,2,3],
[4,5,6,7],
[8,9,10,11]],
[[12,13,14,15],
[16,17,18,19],
[20,21,22,23]]])
軸編號元組中元素的順序默認是0、1、2。
2.7.2
數(shù)組的轉置transpose()方法new_arr=arr.transpose(
(1,0,2))new_arr.shape
(3,2,4)
比較(2,3,4)可知,前兩個值的順序發(fā)生了變化,說明這兩個軸的元素進行了互換。new_arr=arr.transpose(
(0,2,1))new_arr.shape
(2,4,3)
比較(2,3,4)可知,后兩個值的順序發(fā)生了變化,說明這兩個軸的元素進行了互換。2.7.2
數(shù)組的轉置transpose()方法如果我們在調用transpose()方法進行轉置時不傳入任何參數(shù),直接調用transpose()方法,則此時轉置的效果等價于transpose(2,1,0)的效果。數(shù)組的其他操作2.82.8.1
條件邏輯掌握條件邏輯操作,能夠通過
where()函數(shù)實現(xiàn)條件邏輯的操作學習目標2.8.1
條件邏輯在NumPy中,where()函數(shù)相當于三元表達式xifconditionelsey的矢量化版本,用于根據(jù)條件返回x或者y中的元素,如果滿足條件返回x中的元素,不滿足條件返回y中的元素。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)result
2.8.2
統(tǒng)計運算掌握統(tǒng)計運算操作,能夠通過統(tǒng)計運算的方法實現(xiàn)統(tǒng)計運算的操作學習目標2.8.2
統(tǒng)計運算統(tǒng)計運算的方法方法說明sum()對數(shù)組中全部或某個軸向的元素求和mean()算術平均值min()計算數(shù)組中的最小值max()計算數(shù)組中的最大值argmin()表示最小值的索引argmax()表示最大值的索引cumsum()所有元素的累計和cumprod()所有元素的累計積2.8.3
數(shù)組元素排序掌握數(shù)組元素的排序方式,能夠通過sort()方法實現(xiàn)數(shù)組的排序操作學習目標2.8.3
數(shù)組元素排序如果希望對NumPy數(shù)組中的元素進行排序,可以通過sort()方法實現(xiàn)。arr=np.array([[6,2,7],
[3,6,2],
[4,3,2]])arr.sort()arr
array([[2,6,7],
[2,3,6],
[2,3,4]])
排序后,每一行元素按照從小到大的順序排列?!鵶ort()方法會修改數(shù)組本身。2.8.3
數(shù)組元素排序如果希望對任意一個軸上的元素進行排序,只需要在使用sort()方法排序時傳入axis參數(shù),通過該參數(shù)指定待排序軸的編號。arr=np.array([[6,2,7],[3,6,2],[4,3,2]])arr.sort(axis=0)arr
array([[3,2,2],[4,3,2],[6,6,7]])
排序后,每一列元素按照從小到大的順序排列。2.8.4
檢索數(shù)組元素是否滿足條件掌握檢索數(shù)組元素的方式,能夠通過all()和any()函數(shù)實現(xiàn)檢索數(shù)組的操作學習目標2.8.4
檢索數(shù)組元素是否滿足條件在NumPy中,all()函數(shù)用于判斷整個數(shù)組中的元素的值是否全部滿足條件,如果滿足條件返回True,否則返回False。any()函數(shù)用于判斷整個數(shù)組中的元素至少有一個滿足條件就返回True,否則就返回False。arr=np.array([[1,-2,-7],[-3,6,2],[-4,3,2]])np.any(arr>0)np.all(arr>0)2.8.5
查找數(shù)組的唯一元素掌握unique()函數(shù)的使用,能夠通過unique()函數(shù)查找數(shù)組的唯一元素學習目標2.8.5
查找數(shù)組的唯一元素NumPy針對一維數(shù)組提供了unique()函數(shù),該函數(shù)用于找出數(shù)組中的唯一值,并返回一個升序排列的數(shù)組。arr=np.array([12,11,34,23,12,8,11])np.unique(arr)
2.8.6
判斷元素是否在其他數(shù)組中掌握in1d()函數(shù)的使用,能夠通過in1d()函數(shù)判斷元素是否存在于其他數(shù)組中學習目標2.8.6
判斷元素是否在其他數(shù)組中in1d()函數(shù)用于判斷一維數(shù)組中的元素是否在另一個數(shù)組中,該函數(shù)返回的是一個布爾數(shù)組,布爾數(shù)組與一維數(shù)組的長度相等。in1d(ar1,
ar2,
assume_unique=False,
invert=False)
ar1:待判斷的數(shù)組。ar2:判斷ar1的每個元素所依據(jù)的值。assume_unique:是否假設數(shù)組ar1的唯一性,默認值是False。invert:是否倒轉數(shù)組的元素,默認值為False。線性代數(shù)模塊2.92.9
線性代數(shù)模塊熟悉線性代數(shù)模塊,能夠通過linalg模塊的功能完成矩陣操作學習目標2.9
線性代數(shù)模塊線性代數(shù)是數(shù)學運算中的一個重要工具,它在圖形信號處理、音頻信號處理中起非常重要的作用。numpy.linalg模塊中有一組標準的矩陣分解運算以及諸如逆和行列式之類的方法,例如矩陣相乘,如果我們通過“*”對兩個數(shù)組相乘的話,得到的是一個元素級的積,而不是一個矩陣點積。概念2.9
線性代數(shù)模塊NumPy中提供了一個用于矩陣乘法的dot()方法。
arr_x=np.array([[1,2,3],[4,5,6]])arr_y=np.array([[1,2],[3,4],[5,6]])arr_x.dot(arr_y)
方法2.9
線性代數(shù)模塊矩陣點積的條件是矩陣A的列數(shù)等于矩陣B的行數(shù),假設A為m*p的矩陣,B為p*n的矩陣,那么矩陣A與B的乘積就是一個m*n的矩陣C,其中矩陣C的第
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度車輛保險代理合作經(jīng)營合同
- 二零二五年度醫(yī)療行業(yè)人才招聘委托合同
- 教學系統(tǒng)設計(山東聯(lián)盟)知到智慧樹章節(jié)測試課后答案2024年秋濰坊學院
- 健身起跑線知到智慧樹章節(jié)測試課后答案2024年秋青島酒店管理職業(yè)技術學院
- 2025年中國鐵道科學研究院集團有限公司招聘(178人)筆試參考題庫附帶答案詳解
- 提案知識培訓課件
- 2025寧夏伊品生物科技股份有限公司招聘38人筆試參考題庫附帶答案詳解
- 2025中國平煤神馬集團開封華瑞化工新材料股份有限公司招聘21人筆試參考題庫附帶答案詳解
- 2024福建漳州市常山華僑經(jīng)濟開發(fā)區(qū)僑城建設發(fā)展有限公司招聘3人筆試參考題庫附帶答案詳解
- 2025年上半年六盤水盤縣事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 加工中心操作規(guī)程培訓
- 大學英語四級考試高頻詞匯1500
- 高速公路工程施工安全標準化指南
- 危險貨物運輸-課件
- (高清版)TDT 1056-2019 縣級國土資源調查生產(chǎn)成本定額
- 拼多多店鋪運營策略研究
- 小學班級管理現(xiàn)狀及策略分析
- 2023學年完整公開課版繪本閱讀We all love ice cream
- 半固態(tài)電池技術工藝
- 初中數(shù)學二元一次方程組作業(yè)設計
- GB/T 2659.3-2023世界各國和地區(qū)及其行政區(qū)劃名稱代碼第3部分:原先使用的國家和地區(qū)代碼
評論
0/150
提交評論