第3章 科學計算Numpy庫_第1頁
第3章 科學計算Numpy庫_第2頁
第3章 科學計算Numpy庫_第3頁
第3章 科學計算Numpy庫_第4頁
第3章 科學計算Numpy庫_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章科學計算Numpy庫

本章內容3.1Numpy數組的使用3.2Numpy中矩陣對象(matrix)3.3NumPy中的數據統計分析3.1Numpy數組的使用3.1Numpy數組的使用Numpy(NumericalPython的簡稱)是高性能科學計算和數據分析的基礎包。Numpy是Python的一個科學計算的庫,提供了矩陣運算的功能。在NumPy中,最重要的對象是稱為ndarray的N維數組類型,它是描述相同類型的元素集合。darray中的每個元素都是數據類型對象(dtype)的對象。3.1.1Numpy數組創建3.1.2Numpy數組中的元素訪問3.1.3Numpy數組的算術運算3.1.4Numpy數組的形狀(shape)操作3.1.1Numpy數組創建NumPy數組是一個多維數組對象,稱為ndarray。ndarray的秩(rank)ndarray.ndim軸的數量,即數組的維數ndarray的軸(axes)每一個線性數組稱為一個軸(axes)每一個NumPy數組:NumPy數組的下標從0開始;同一個NumPy數組中所有元素的類型必須是相同的。對于一維數組,axis=0代表列對于二維數組,axis=0代表行,axis=1代表列對于三維數組,axis=0代表頁,axis=1代表行,axis=2代表列即對于多維數組,axis數字越小,維度越高2、創建數組從Python列表和元組創建一維數組3.1.1Numpy數組創建從Python列表和元組創建多維數組創建數組時指定數組元素的數據類型2、創建數組使用NumPy函數創建特殊數組使用zeros()函數創建全零數組使用ones()函數創建全1數組3.1.1Numpy數組創建NumPy數組不能像Python列表一樣增長。數組的末端沒有留下任何便于快速附加元素的空間:先使用Python列表,準備好之后再將其轉換為NumPy數組,使用np.zeros或np.empty預先留下必要的空間,為添加新元素做準備也可以使用np.zeros_like等創建在形狀和元素類型上與已有數組匹配的空數組2、創建數組使用arange函數arange([start,]stop[,step,])類似于python的range函數,通過指定開始值、終值和步長來創建一維數組,注意數組不包括終值:3.1.1Numpy數組創建2、創建數組linspace()函數linspace(start,stop,num=50,endpoint=True)通過指定開始值、終值和元素個數(默認為50)來創建一維數組,可以通過endpoint關鍵字指定是否包括終值,缺省設置是包括終值。3.1.1Numpy數組創建2、創建數組生成隨機數數組numpy.random.randint(low,high=None,size=None,dtype=int)返回一個隨機整數數組,范圍從low(包括)到high(不包括),即[low,high)。如果沒有寫參數high,則返回[0,low)的值。3.1.1Numpy數組創建2、創建數組生成隨機數數組np.random.random(size=None)np.random.rand(d0,d1,...,dn)生成[0,1)

區間隨機小數或隨機小數數組的則使用random.random()函數或者random.rand()函數。3.1.1Numpy數組創建3、NumPy的數據類型3.1.1Numpy數組創建名稱描述bool用一個字節存儲的布爾類型(True或False)inti由所在平臺決定其大小的整數(一般為int32或int64)int8一個字節大小,-128至127int16整數,-32768至32767int32整數,-231

至232-1int64整數,-263

至263-1uint8無符號整數,0至255uint16無符號整數,0至65535uint32無符號整數,0至232-1uint64無符號整數,0至264-1float16半精度浮點數:16位,正負號1位,指數5位,精度10位float32單精度浮點數:32位,正負號1位,指數8位,精度23位float64或float雙精度浮點數:64位,正負號1位,指數11位,精度52位complex64復數,分別用兩個32位浮點數表示實部和虛部complex128或complex復數,分別用兩個64位浮點數表示實部和虛部1、Numpy一維數組的索引和切片3.1.2Numpy數組中的元素訪問訪問描述X[i]索引第i-1個元素X[-i]從后向前索引第i個元素X[n:m]

切片,默認步長為1,從前往后索引,不包含m的元素X[-m:-n]切片,默認步長為1,從前往后索引,不包含-n的元素X[n:m:i]切片,指定i步長的由n到m的索引1020304050607080901001101201300123456789101112-13-12-11-10-9-8-7-6-5-4-3-2-1[:8][7:][:][6:-1:2]1、NumPy的索引和切片一維數組的切片3.1.2Numpy數組中的元素訪問當切片不能進行時,解釋器會返回一個空數組1、NumPy多維數組的索引和切片多維數組的切片多維數組在每個軸各自有一個索引,各軸索引之間由逗號分隔。當在各個軸上進行連續切片時,使用:連接頭下標和尾下標;當進行不連續切片時,要給出一個指定下標組成的元組。3.1.2Numpy數組中的元素訪問數組的復制copy()np.copy()np.ndarray.copy()1、Numpy數組之間算術運算Numpy數組之間的算術運算是按元素逐個運算。Numpy數組運算后將創建包含運算結果的新數組。3.1.3Numpy數組的算術運算1、Numpy數組之間算術運算NumPy中的乘法運算符*按元素逐個計算,矩陣乘法可以使用dot函數或創建矩陣對象實現。3.1.3Numpy數組的算術運算1、Numpy數組之間算術運算有些操作符如+=和*=用來更改已存在數組而不創建一個新的數組。3.1.3Numpy數組的算術運算2、Numpy數組統計運算Numpy數組的常用統計方法如下:3.1.3Numpy數組的算術運算方法(函數名)說明np.sum所有元素的和d所有元素的乘積np.cumsum元素的累積加和np.cumprod元素的累積乘積np.min最小值np.max最大值np.percentile0-100百分位數np.quantile0-1分位數np.median中位數np.average加權平均,參數可以指定weightsnp.mean平均值np.std標準差np.var方差2、Numpy數組統計運算統計運算將數組展開成一維線性列表計算。3.1.3Numpy數組的算術運算2、Numpy數組統計運算可通過指定axis參數(即數組的維)對指定的軸做相應的運算。Numpy的axis參數的用途:二維narray對象中,axis=0表示沿著0軸在列上進行計算/操作,axis=1表示沿著1軸在行上計算/操作。3.1.3Numpy數組的算術運算1、數組的形狀數組的形狀取決于其每個軸上的元素個數,通常是一個元組,按照0軸、1軸、2軸…的順序排列。3.1.4Numpy數組的形狀(shape)操作2、改變數組的形狀Nb數組的形狀是(3,4,2)即3頁4行2列0軸1軸2軸3.1.4Numpy數組的形狀(shape)操作2、改變數組的形狀reshape()和resize()函數reshape()函數改變調用數組的形狀并返回該數組的備份resize()函數改變調用數組自身(in-place)3.2Numpy中矩陣對象(matrix)Numpy模塊庫中的矩陣對象為numpy.matrix,實現了對矩陣數據的處理,包括矩陣的計算、基本的統計功能等,以及復數矩陣的處理。1、創建矩陣對象numpy.matrix(data,dtype,copy)其中參數data為ndarray對象或者字符串形式;dtype:為matrix的數據類型;copy:為bool類型。3.2Numpy中矩陣對象(matrix)2、矩陣對象屬性matrix.T(transpose):返回矩陣的轉置矩陣np.matrix.getT()matrix.H(conjugate):返回復數矩陣的共軛轉置矩陣np.matrix.getH()matrix.I(inverse):返回矩陣的逆矩陣np.matrix.getI()matrix.A(basearray):返回基于矩陣的數組np.matrix.getA()3.3NumPy中的數據統計分析3.3.1排序直接排序對數據直接進行排序sort()函數間接排序排序結果是直接排序數據對應的索引形成的數組。argsort()和lexsort()函數3.3NumPy中的數據統計分析3.3.1排序1、sort()函數sort()函數是常用的排序方法,函數調用不會改變原始數組,返回一個排序后數組的臨時復本,其shape與原數組一致。格式:numpy.sort(a,axis,kind,order)其中參數含義如下:a:要排序的數組。axis:使得sort函數可以沿著指定軸對數組進行排序。axis=1按行排序,axis=0為按列排序,axis=None將數組平坦化后進行排序,默認axis=-1時沿最后一個軸排序,即如果是2維array,則按axis=1時排序。kind:排序算法,默認quicksort快速排序算法。order:主要對結構化數組進行排序。如果數組包含定義的字段,order指定要排序的字段順序。3.3NumPy中的數據統計分析3.3.1排序2、sort()函數帶參數軸的排序3.3NumPy中的數據統計分析3.3.1排序3、使用argsort和lexsort函數間接排序使用argsort()和lexsort()函數,可以在數組排序后,得到一個由整數構成的索引數組,索引值表示排序后數據在原數組序列中的位置。(1)argsort()函數間接排序argsort(a,axis=-1,kind=None,order=None)argsort()函數其返回的是從小到大排序后的索引列表。當axis=0時,按列排列;當axis=1時,按行排列。如果省略默認沿最后一個軸排序,對于二維數組默認按行排序。可以與np.take_along_axis()配合使用。Kind指定排序算法,默認使用quicksort算法。order可以指定結構化數組的排序關鍵字。3.3NumPy中的數據統計分析3.3.1排序(2)lexsort()函數間接排序lexsort(keys,axis=-1)按照keys指定的排序關鍵字進行多條件排序。Keys是一個數組或元組,被解釋器解釋為二維表格中的列。排序時Keys數組/元組中最后一個元素是第一排序關鍵字,倒數第二個元素是第二排序關鍵字,…,以此類推。3.3NumPy中的數據統計分析3.3.2重復數據與去重1、數組內數據去重通過unique()函數可以找出數組中的唯一值并返回已排序的結果。unique(ar,return_index=False,return_inverse=False,return_counts=False,axis=None)ar:待處理的數組return_index:設置為True時返回結果的索引數組return_inverse:設置為True時,返回一個索引數組,可以通過這個索引數組還原原數組arreturn_counts:設置為True時,返回原數組中重復數據出現次數的統計數組axis:沿指定軸去重。2維數組axis=0時按行去重,axis=1時按列去重。默認axis=None,將數組平坦化后進行去重并排序3.3NumPy中的數據統計分析3.3.2重復數據與去重1、數組內數據去重設置axis參數可以按行或者列刪除。當指定axis參數時,數組按照指定軸上的子數組去重和排序。首先,指定軸作為子數組的第一維按C語言模式平坦化,此時,子數組被看作有標簽的結構化數組,去重后排序時按照類似lexsort的字典排序,以子數組的第一個元素開始依次為排序依據R0R1R2R3R43.3NumPy中的數據統計分析3.3.2重復數據與去重2、數組數據的復制重構使用np.tile()和np.repeat()來進行數組數據重復。(1)np.tile()np.tile()函數功能是對整個數組進行復制拼接,實現數組的廣播操作。用法如下:numpy.tile(a,reps)其中a為數組,reps為沿著各個軸重復的次數。當a_dimension=len(reps)時,按reps參數進行復制當a_dimension>len(reps)時,在reps初始位置插入若干個1,使得a_dimen

溫馨提示

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

評論

0/150

提交評論