Python機(jī)器學(xué)習(xí) 第2版 課件 第4章數(shù)據(jù)科學(xué)庫_第1頁
Python機(jī)器學(xué)習(xí) 第2版 課件 第4章數(shù)據(jù)科學(xué)庫_第2頁
Python機(jī)器學(xué)習(xí) 第2版 課件 第4章數(shù)據(jù)科學(xué)庫_第3頁
Python機(jī)器學(xué)習(xí) 第2版 課件 第4章數(shù)據(jù)科學(xué)庫_第4頁
Python機(jī)器學(xué)習(xí) 第2版 課件 第4章數(shù)據(jù)科學(xué)庫_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Machine

Learning

with

Python4.1目錄4.24.3Numpy庫Matplotlib庫Pandas庫案例——鳶尾花數(shù)據(jù)分析4.54.44.6延伸閱讀——維護(hù)者的努力和奉獻(xiàn)本章小結(jié)Numpy庫本節(jié)介紹Numpy庫及庫內(nèi)函數(shù)的調(diào)用4.13

4.1.1

安裝NumPy庫下載NumPy安裝程序。打開網(wǎng)址/project/numpy/,運(yùn)行界面如圖6-1a所示。找到自己所安裝的Python版本所對應(yīng)的NumPy版本??筛鶕?jù)需要選擇下載32位/64位安裝程序,如圖6-1b所示

a)

b)圖6-1

NumPy安裝程序下載4

4.1.1

安裝NumPy庫將下載的文件復(fù)制到Python安裝目錄下的Scripts目錄,如圖6-2所示。例如當(dāng)前安裝目錄為C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts。

圖6-2NumPy文件位置5

4.1.1

安裝NumPy庫用cmd命令打開“命令提示符”窗口,通過cd命令切換到Python安裝目錄下的Scripts目錄,如圖6-3所示。(C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts目錄下)

圖6-3PythonScripts地址目錄6

4.1.1

安裝NumPy庫在命令提示符窗口輸入pipinstall--upgradepip(用于更新pip),如圖6-4所示。安裝wheel庫,pipinstallwheel,如圖6-5所示。

圖6-4下載pip圖6-5

下載wheel7

4.1.1

安裝NumPy庫安裝NumPy,輸入命令:pipinstallnumpy-1.17.4-cp37-cp37m-win_amd64.whl,如圖6-6所示。

圖6-6

安裝NumPy8

4.1.1安裝NumPy庫測試是否安裝成功,在Python編譯器中輸入如下測試代碼:

importnumpyasnpprint(np.random.rand(3.3))結(jié)果輸出一個隨機(jī)的3×3的矩陣,則說明NumPy安裝成功,如圖6-7所示。

圖6-7測試NumPy9

4.1.1

安裝NumPy庫點(diǎn)擊file下的settings選項(xiàng)。點(diǎn)擊projectinterpreter選項(xiàng)。點(diǎn)擊最右側(cè)的加號按鈕。輸入numpy,選擇搜索結(jié)果的第一個選項(xiàng)。點(diǎn)擊底部的installpackage按鈕。如底部出現(xiàn)successfully字樣則表示安裝成功。

10

4.1.2數(shù)據(jù)的獲取open()函數(shù)使用open()函數(shù)可以創(chuàng)建或打開文件并返回一個文件對象,其函數(shù)格式如下:

fileobj=open(filename,mode)

其中:1)fileobj:open()返回的文件對象。2)filename:該文件的字符串名。3)mode:指明文件類型和操作的字符串。

a)

圖1-1Python安裝包下載b)

11

4.1.2數(shù)據(jù)的獲取

open()函數(shù)mode的第一個字母表明對其的操作,具體值如下。

r:表示讀模式。w:表示寫模式。如果文件不存在則新創(chuàng)建,如果存在則重寫新內(nèi)容x:表示在文件不存在的情況下新創(chuàng)建并寫文件。a:表示如果文件存在,在文件末尾追加寫內(nèi)容。

mode的第二個字母是文件類型,具體值如下。t:代表為文本文件。b:代表為二進(jìn)制文件。12

4.1.2數(shù)據(jù)的獲取

write()函數(shù)使用write(str)函數(shù)可以將其參數(shù)str中的內(nèi)容寫入文件中。

【例6-1】創(chuàng)建名為“relativity”新文件,并將一首詩寫入該文件。參考程序如下:poem='''TherewasayoungladynamedBright,...Whosespeedwasfarfasterthanlight;

...Shestartedoneday...Inarelativeway,

...Andreturnedonthepreviousnight.'''fout=open('relativity','wt')fout.write(poem)fout.close()13

4.1.2數(shù)據(jù)的獲取

read()和readline()函數(shù)使用不帶參數(shù)的read()函數(shù)可以一次讀入文件的所有內(nèi)容。例如:

fin=open('relativity','rt')poem=fin.read()fin.close()len(poem)運(yùn)行結(jié)果如下:15014

4.1.2數(shù)據(jù)的獲取

read()和readline()函數(shù)也可以使用readline()每次讀入文件的一行,通過追加每一行拼接成原來的字符串。例如:

poem=''fin=open('relativity','rt')whileTrue:line=fin.readline()ifnotline:breakpoem+=linefin.close()len(poem)運(yùn)行結(jié)果如下:150對于一個文本文件,即使空行,也有1字符長度(換行字符'\n'),因此也會返回True。當(dāng)文件讀取結(jié)束后,readline()與read()都會返回空字符串,被while循環(huán)判為False。15

4.1.2數(shù)據(jù)的獲取

close()函數(shù)close()方法負(fù)責(zé)關(guān)閉文件,如果忘記關(guān)閉文件,會造成系統(tǒng)資源消耗,而且會影響到后續(xù)對文件的訪問。16

4.1.2數(shù)據(jù)的獲取本節(jié)主要介紹的機(jī)器可讀文件格式為CSV。CSV(逗號分隔值)文件格式是一種非常簡單的數(shù)據(jù)存儲與分享方式,文件的擴(kuò)展名是.csv。CSV文件將數(shù)據(jù)表格存儲為純文本,表格(或電子表格)中的每一個單元格都是一個數(shù)值或字符串,單元格之間常以逗號分隔。與Excel文件相比,CSV文件的一個主要優(yōu)點(diǎn)是它的純文本格式可以被大多數(shù)程序存儲、轉(zhuǎn)存和處理。使用CSV格式時(shí)需要注意以下幾點(diǎn)。1)除了逗號,還有其他可代替的分隔符,例如“|”和“\t”。2)有些數(shù)據(jù)會出現(xiàn)轉(zhuǎn)義字符,如果某個值內(nèi)部包含了分隔符,則該值需加上引號或者在分隔符之前加上轉(zhuǎn)義字符。3)文件可能有不同的換行符,Unix系統(tǒng)使用“\n”,Microsoft系統(tǒng)使用“\r\n”,Mac系統(tǒng)之前使用“\r”現(xiàn)在使用“\n”。4)在第一行可以加上列名。17

4.1.2數(shù)據(jù)的獲取本章的CSV實(shí)例采用了鳶尾花數(shù)據(jù)集。為了讓數(shù)據(jù)更容易閱讀,下面給出一個數(shù)據(jù)樣本,其中只包含經(jīng)過挑選的特定字段。在文本編輯器中打開CSV文件,看到的數(shù)據(jù)應(yīng)該與下列數(shù)據(jù)相似。

sepal_len,sepal_width,petal_len,petal_width,Species5.1,3.5,1.4,0.2,Iris-setosa4.9,3,1.4,0.2,Iris-setosa4.7,3.2,1.3,0.2,Iris-setosa4.6,3.1,1.5,0.2,Iris-setosa5,3.6,1.4,0.2,Iris-setosa5.4,3.9,1.7,0.4,Iris-setosa預(yù)覽CSV文件的另一種方法是用電子表格程序打開,例如Excel或者WPS,這些程序?qū)⒚恳粋€數(shù)據(jù)條目顯示為單獨(dú)的一行。18

4.1.2數(shù)據(jù)的獲取使用numpy.loadtxt()函數(shù)可以方便地讀寫數(shù)據(jù)文件,但要求數(shù)據(jù)文件的每一行格式相同。通過loadtxt()方法來讀取CSV文件的具體語法格式為:

numpy.loadtxt(fname,dtype=,comments='#',delimiter=None,converters=None,skiprows=0,

usecols=None,unpack=False)其中:1)fname:被讀取的文件(文件的相對地址或者絕對地址)。2)dtype:指定讀取后數(shù)據(jù)的數(shù)據(jù)類型,為可選參數(shù)。3)comments:設(shè)置需跳過行的標(biāo)識。如設(shè)置為“#”,則“#”開頭的行會被跳過。4)delimiter:設(shè)置分隔符,默認(rèn)值為任何空白字符,如空格,制表符。5)converters:是否對讀取的數(shù)據(jù)進(jìn)行預(yù)處理,可以指定一個預(yù)處理函數(shù)。6)skiprows:選擇跳過的行數(shù)。7)usecols:指定需要讀取的列。8)unpack:是否將數(shù)據(jù)進(jìn)行向量輸出。19

4.1.2數(shù)據(jù)的獲取【例6-2】讀取鳶尾花數(shù)據(jù)集csv文件。參考程序如下:

importnumpyasnpcsv_array=np.loadtxt('/Users/Downloads/iris.csv',dtype=str,delimiter=',')print(csv_array)程序運(yùn)行結(jié)果如下:[['5.1','3.5','1.4','0.2']['4.9','3','1.4','0.2']['4.7','3.2','1.3','0.2']['4.6','3.1','1.5','0.2']['5','3.6','1.4','0.2']['5.4','3.9','1.7','0.4']]20

4.1.2數(shù)據(jù)的獲取【例6-2】讀取鳶尾花數(shù)據(jù)集csv文件。寫入文本文件后可以使用numpy.savetxt()函數(shù)保存,具體的語法格式為:

numpy.savetxt(fname,X)其中:1)fname:文件名。2)X:被寫入文件的ndarray數(shù)據(jù),數(shù)據(jù)類型為ndarray對象21

4.1.2數(shù)據(jù)的獲取【例6-3】將例6-2中讀取的結(jié)果寫入一個新的文本文件并查看。參考程序如下:

np.savetxt('data_output.txt',csv_array,fmt='%s')a=np.loadtxt('data_output.txt')a程序運(yùn)行結(jié)果如下:

array([[5.1,3.5,1.4,0.2],[4.9,3.,1.4,0.2],[4.7,3.2,1.3,0.2],[4.6,3.1,1.5,0.2],[5.,3.6,1.4,0.2],[5.4,3.9,1.7,0.4]])22

4.1.3數(shù)組創(chuàng)建與使用

read()和readline()函數(shù)也可以使用readline()每次讀入文件的一行,通過追加每一行拼接成原來的字符串。例如:

poem=''fin=open('relativity','rt')whileTrue:line=fin.readline()ifnotline:breakpoem+=linefin.close()len(poem)運(yùn)行結(jié)果如下:150對于一個文本文件,即使空行,也有1字符長度(換行字符'\n'),因此也會返回True。當(dāng)文件讀取結(jié)束后,readline()與read()都會返回空字符串,被while循環(huán)判為False。23

4.1.3數(shù)組創(chuàng)建與使用

使用arange()函數(shù)可以創(chuàng)建一個數(shù)組,在給定間隔內(nèi)返回均勻間隔的值。值在半開區(qū)間內(nèi)生成,即包括起始值但不包括結(jié)束值。其完整函數(shù)如下:numpy.arange(start,stop,step,dtype=None)其中:1)start:為起始值,數(shù)據(jù)類型為數(shù)值型,可選,默認(rèn)起始值為0。2)stop:為結(jié)束值,數(shù)據(jù)類型為數(shù)值型,必須指定。3)step:步長,數(shù)據(jù)類型為數(shù)值型,可選,默認(rèn)步長為1。如果指定了step,則必須給出start值。4)dtype:輸出數(shù)組的數(shù)據(jù)類型。如果未給出dtype,則從其他輸入?yún)?shù)推斷數(shù)據(jù)類型。24

4.1.3數(shù)組創(chuàng)建與使用

arange()函數(shù)生成的數(shù)組為1維數(shù)組,可以使用reshape()函數(shù)改變其維度,使之成為一個n維數(shù)組。reshape()函數(shù)的作用就是改變數(shù)組的維度,其參數(shù)為一個正整數(shù)元組,分別指定數(shù)組在每個維度上的大小。

例如:importnumpyasnparr1=np.arange(12).reshape(3,4)print(arr1)程序運(yùn)行結(jié)果如下:array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])如需自定義數(shù)組的值,可以使用array()函數(shù)。25

4.1.3數(shù)組創(chuàng)建與使用

如需自定義數(shù)組的值,可以使用array()函數(shù)。

例如:importnumpyasnparr2=np.array([2,3,4])arr3=np.array([[1.0,2.0],[3.0,4.0]])

還可以通過ones()函數(shù)、zeros()、empty()函數(shù)創(chuàng)建全1、全0、全空值數(shù)組。例如:程序運(yùn)行結(jié)果如下:arr4=np.ones(3)array([1,1,1])arr5=np.zeros([3,4])array([[0,0,0,0],print(arr4)[0,0,0,0],print(arr5)[0,0,0,0]])26

4.1.3數(shù)組創(chuàng)建與使用

在創(chuàng)建好數(shù)組后,可以通過數(shù)組的屬性查看數(shù)組的各項(xiàng)信息。

ndarray.dtype:數(shù)組中元素類型。例如數(shù)組a的數(shù)據(jù)類型為int64,如果使用了32位的Python,得到的結(jié)果可能為int32?!纠?-4】創(chuàng)建一個2維數(shù)組,查看其dtype屬性。參考程序如下:importnumpyasnparr1=np.arange(15).reshape(3,5)print(arr1)print()程序運(yùn)行結(jié)果如下:array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])'int64'27

4.1.3數(shù)組創(chuàng)建與使用ndarray.shape:數(shù)組的維度,為一個整數(shù)元組,表示每個維度中數(shù)組的大小。對于有n行和m列的矩陣,shape將是(n,m)。因此,shape元組的長度就是維度的個數(shù)。

例如:運(yùn)行結(jié)果如下:print(arr1.shape)(3,5)

ndarray.ndim:數(shù)組的軸(維度)個數(shù)。例如:運(yùn)行結(jié)果如下:print(arr1.ndim)2

ndarray.size:數(shù)組元素的總數(shù),相當(dāng)于shape中元素值的乘積。

例如:運(yùn)行結(jié)果如下:print(arr1.size)15

28

4.1.3數(shù)組創(chuàng)建與使用ndarray.itemsize:數(shù)組中每個元素的字節(jié)大小。元素為float64類型的數(shù)組的itemsize為8(=64/8),而complex32類型的數(shù)組的itemsize為4(=32/8),它等于ndarray.dtype.itemsize。

例如:運(yùn)行結(jié)果如下:print(arr1.itemsize)8

ndarray.nbytes:數(shù)組所占的空間,為itensize和size的乘積。例如:運(yùn)行結(jié)果如下:print(arr1.nbytes)120

29

4.1.3數(shù)組創(chuàng)建與使用

一維數(shù)組元素的選取與Python列表的切片操作很相似。但與列表不同的是,選取的數(shù)據(jù)組成的新數(shù)組與原數(shù)組共享一個內(nèi)存存儲空間,即更改新數(shù)組中某個元素的值,原數(shù)組也會產(chǎn)生相應(yīng)變化。下面列舉幾種常見的選取方式。一維數(shù)組元素的選取

單一元素的選取與列表、元組的選取方式相同,均采用下標(biāo)的方式。例如:程序運(yùn)行結(jié)果如下:

importnumpyasnparray([0,1,2,3,4,5,6,7,8,9])arr2=np.arange(10)0print(arr2)print(arr2[0])30

4.1.3數(shù)組創(chuàng)建與使用一維數(shù)組元素的選取使用負(fù)數(shù)下標(biāo)可以反向選擇數(shù)組中的元素。例如:程序運(yùn)行結(jié)果如下:

print(arr2[-1])9使用切片作為下標(biāo)可以選取數(shù)組中的一部分。

例如:數(shù)組名稱[start:end:step]其中:1)start:開始索引。如省略開始索引,則開始索引值為0。2)end:結(jié)束索引。如省略結(jié)束索引,則結(jié)束索引值為數(shù)組對應(yīng)元素最大索引值。3)step:步長。如省略步長,則步長值為1。31

4.1.3數(shù)組創(chuàng)建與使用一維數(shù)組元素的選取例如:

#選取索引為0(包含0)到索引為2(不包含2)的元素且步長為1(即第1個和第2個元素)print(arr2[0:2:1])#選取索引為0(包含)到索引為10(不包含)的元素且步長為2(即第1、3、5、7、9個元素)print(arr2[0:10:2])#從索引為1的元素且步長為2選取元素print(arr2[1::2])#從索引為1的元素開始選取元素程序運(yùn)行結(jié)果如下:print(arr2[1:])[01]#選取索引為0到2之間的元素[02468]print(arr2[:2:1])[13579]#以步長為2選擇數(shù)組中的元素[123456789]print(arr2[::2])[01]#使用負(fù)數(shù)步長來翻轉(zhuǎn)數(shù)組[02468]print(arr2[::-1])[9876543210]32

4.1.3數(shù)組創(chuàng)建與使用

多維數(shù)組的選取多維數(shù)組的選取仍然基于上述方法。但在復(fù)雜的選取中,則需要將上述方法配合使用。例如創(chuàng)建一個三維數(shù)組,包含0至23的整數(shù)共24個元素,尺寸為2×3×4,選擇其第1層第1行第1列的元素。

importnumpyasnp程序運(yùn)行結(jié)果如下:arr3=np.arange(24).reshape(2,3,4)array([[[0,1,2,3],print(arr3)[4,5,6,7],print(arr3[0,0,0])[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])033

4.1.3數(shù)組創(chuàng)建與使用

多維數(shù)組的選取選取全部行或列的元素,可以將行或列的下標(biāo)用冒號“:”代替,或省略該維度。若需要選取所有層的某列,即不指定層號和行號,可以使用三個點(diǎn)表示。例如:程序運(yùn)行結(jié)果如下:print(arr3[0,:,:])array([[0,1,2,3],print(arr3[0])[4,5,6,7],print(arr3[0,1])[8,9,10,11]])print(arr3[:,1]) #選取所有層的第2行,而不指定層號和列號array([[0,1,2,3],print(arr3[0,:,-1])#選取第1層的最后1列[4,5,6,7],print(arr3[...,1]) #選取所有層的第2列[8,9,10,11]])array([4,5,6,7])array([[4,5,6,7],[16,17,18,19]])array([3,7,11])array([[1,5,9],[13,17,21]])34

4.1.3數(shù)組創(chuàng)建與使用

多維數(shù)組的選取若需要間隔地選取元素,則可以使用步長。如果在多維數(shù)組中執(zhí)行反向選取一維數(shù)組的指令,將在最前面的維度上翻轉(zhuǎn)元素的順序。例如:程序運(yùn)行結(jié)果如下:print(arr3[0,1,::2])array([4,6])print(arr3[0,::2,::2])array([[0,2])print(arr3[0,::-1,-1])#反向選取第1層的最后1列[8,10]])print(arr3[::-1]) #反向選取第1層array([11,7,3])array([[[12,13,14,15],[16,17,18,19],[20,21,22,23]],[[0,1,2,3],[4,5,6,7],[8,9,10,11]]])35

4.1.3數(shù)組創(chuàng)建與使用

布爾型索引NumPy的數(shù)組支持布爾型的索引,即可以使用一個返回布爾值的表達(dá)式作為數(shù)組的索引內(nèi)容。例如,有一個用于存儲數(shù)據(jù)的數(shù)組以及一個布爾值數(shù)組。select=np.array([True,False,False,True,False,False,False])data=np.array([[-0.59108215,0.47462331,1.48256429,0.63585932],[-1.22165659,1.52967449,-0.47629308,1.14733078],[0.55412323,1.26535837,0.5726996,-0.07392482],[-0.85580039,1.36760135,-0.88839855,-0.03639106],[1.21625468,0.99873733,0.73710729,0.21114635],[0.95096753,-2.17702156,0.47864476,-0.18437025],[1.72211463,-0.75815045,0.42090403,0.31997413]])則可以使用布爾值數(shù)組作為數(shù)據(jù)數(shù)組的索引,但需要注意兩個數(shù)組維度要相符。print(data[select])程序運(yùn)行結(jié)果如下:array([[-0.59108215,0.47462331,1.48256429,0.63585932],[-0.85580039,1.36760135,-0.88839855,-0.03639106]])36

4.1.3數(shù)組創(chuàng)建與使用

布爾型索引

還可以繼續(xù)在布爾值索引的基礎(chǔ)上進(jìn)行列索引。例如:print(data[select,2:])print(data[select,3])程序運(yùn)行結(jié)果如下:array([[1.48256429,0.63585932],[-0.88839855,-0.03639106]])array([0.63585932,-0.03639106])37

4.1.3數(shù)組創(chuàng)建與使用

花式索引

在布爾值索引的基礎(chǔ)上,NumPy數(shù)組還提供了花式索引方式,即將數(shù)組作為索引以指定的順序提取指定行和列的元素。

【例6-5】創(chuàng)建數(shù)組實(shí)現(xiàn)花式索引。

參考程序如下:運(yùn)行結(jié)果如下:arr4=np.arange(1,29).reshape(7,4)array([[1,2,3,4],print(arr4)[5,6,7,8],#按照指定的順序返回指定的行[9,10,11,12],print(arr4[[4,1,3,5]])[13,14,15,16],#返回指定的行與列[17,18,19,20],print(arr4[[4,1,5]][:,[0,2,3]])[21,22,23,24],#返回指定位置的元素[25,26,27,28]])print(arr4[[4,1,5],[0,2,3]])array([[17,18,19,20],[5,6,7,8],[13,14,15,16],[21,22,23,24]])array([[17,19,20],[5,7,8],[21,23,24]])array([17,7,24])38

4.1.3數(shù)組創(chuàng)建與使用

替換操作

np.where(conditions,x,y):查找矩陣中滿足一定條件的元素,然后全部替換為設(shè)定的值。如果conditions成立,則數(shù)組中的元素變?yōu)閤值,否則數(shù)組中的元素變?yōu)閥值,但是替換過程不會更改原始數(shù)組。例如:程序運(yùn)行結(jié)果如下:importnumpyasnparray([0,1,0,1])arr5=np.array([2,6,2,9])array([2,6,2,9])#將大于2的數(shù)組元素替換為1,小于等于2的元素替換為0array([[0,1,2],arr6=np.where(arr5>2,1,0)[3,4,5],print(arr6)[6,7,8]])print(arr5)array([[0,0,0],#二維數(shù)組(矩陣)[0,1,1],arr7=np.arange(9).reshape(3,3)[1,1,1]])print(arr7)#將大于3的數(shù)組元素替換為1,小于3的數(shù)組元素替換為0arr8=np.where(arr7>3,1,0)print(arr8)39

4.1.3數(shù)組創(chuàng)建與使用

替換操作

np.astype():本函數(shù)和np.where()函數(shù)的使用方法類似,但是效率更高一些。例如:程序運(yùn)行結(jié)果如下:print(arr5>2)array([False,True,False,True])

print((arr5>2).astype(int))array([0,1,0,1])print((arr7>2).astype(int))array([[0,0,0],[1,1,1],[1,1,1]])

排序操作通過sort()函數(shù)對數(shù)組進(jìn)行排序,具體語法格式為:

np.sort(a,axis=-1,kind='quicksort',order=None)其中:a:所需排序的數(shù)組。axis:可選參數(shù),取值整數(shù)或None。若axis為None,數(shù)組先偏平化(降維)再排序。若axis=n,表示沿著數(shù)組的軸n排序。默認(rèn)axis為-1,表示沿?cái)?shù)組的最后一條軸排序。kind:排序算法,取值為quicksort、mergesort、heapsort分別表示快速排序、合并排序、堆排序。默認(rèn)取值為quicksort。order:在結(jié)構(gòu)化數(shù)組中,可以指定按某個字段排序。40

4.1.3數(shù)組創(chuàng)建與使用

排序

例如:程序運(yùn)行結(jié)果如下:

importnumpyasnparray([0,1,1,2,2,3,4,5,6,7,8,9])arr1=np.array([[3,2],[1,6],[2,1],[0,9],[4,8],[5,7]])array([[2,3],[1,6],[1,2],[0,9],[4,8],[5,7]])arr2=np.sort(arr1,axis=None)array([[0,1],[1,2],[2,6],[3,7],[4,8],[5,9]])arr3=np.sort(arr1,axis=-1) #對每行內(nèi)的元素排序array([[2,3],[1,6],[1,2],[0,9],[4,8],[5,7]])arr4=np.sort(arr1,axis=0) #對每列內(nèi)的元素排序arr5=np.sort(arr1,axis=1) #對每行內(nèi)的元素排序print(arr2)print(arr3)print(arr4)print(arr5)

41

4.1.3數(shù)組創(chuàng)建與使用

排序通過argsort()函數(shù)對數(shù)組進(jìn)行間接排序,返回?cái)?shù)組排序后元素對應(yīng)的位置整數(shù)組成的索引數(shù)組(又稱索引器)。具體語法格式為:

np.argsort(a,axis=-1,kind='quicksort',order=None)例如:運(yùn)行結(jié)果如下:arr1=np.array([4,2,5,7,3])array([1,4,0,2,3],dtype=int64)arr2=np.argsort(arr1)array([[1,0],[0,1]],dtype=int64)#數(shù)組arr2中的元素表示的是數(shù)組arr1中的元素的索引,5個元素的索引分別為0-4array([[0,0],[1,1]],dtype=int64)#arr2[0]=1表示原數(shù)組arr1的最小元素的索引為1#arr2[1]=4表示原數(shù)組arr的第2小元素的索引為4print(arr2)arr3=np.array([[3,2],[5,7]])print(np.argsort(arr3,axis=1))print(np.argsort(arr3,axis=0))#axis=1,表明按照行進(jìn)行排序,即是對[3,2]進(jìn)行排序,所以得到索引為[1,0]#axis=0,表明按照列進(jìn)行排序,即是對[3,5]進(jìn)行排序,所以得到索引為[0,1]42

4.1.3數(shù)組創(chuàng)建與使用

重塑

通過reshape()函數(shù)改變數(shù)組的形狀,具體語法格式為:

reshape(a,newshape,order='C')

其中:

a:要改變的數(shù)組。newshape:要轉(zhuǎn)換成何種形式的新數(shù)組。order:表示按照該索引的順序重新排列數(shù)組,默認(rèn)參數(shù)是C,即按行填充,當(dāng)參數(shù)為F時(shí),則按列填充。

43

4.1.3數(shù)組創(chuàng)建與使用

重塑【例6-6】創(chuàng)建數(shù)組,使用函數(shù)reshape(a,newshape,order='C')進(jìn)行數(shù)組重塑。參考程序如下:程序運(yùn)行結(jié)果如下:arr4=np.arange(8)array([0,1,2,3,4,5,6,7])print(arr4)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論