久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python進(jìn)階之NumPy快速入門(mén)(三)

 網(wǎng)摘文苑 2022-11-15 發(fā)布于新疆

引言

NumPy是Python的一個(gè)擴(kuò)展庫(kù),負(fù)責(zé)數(shù)組和矩陣運(yùn)行,。相較于傳統(tǒng)Python,,NumPy運(yùn)行效率高,速度快,,是利用Python處理數(shù)據(jù)必不可少的工具,。

這個(gè)NumPy快速入門(mén)系列分為四篇,包含了NumPy大部分基礎(chǔ)知識(shí),,每篇閱讀時(shí)間不長(zhǎng),,但內(nèi)容含量高。大家最好親自碼一遍代碼,,這樣可以更有收獲,。

前面的課程:

Python進(jìn)階之NumPy快速入門(mén)(一)

Python進(jìn)階之NumPy快速入門(mén)(二)

概要

1、掌握NumPy中的數(shù)組操作,輕松改變數(shù)組形狀,;

2,、掌握NumPy中的字符串,輕松應(yīng)對(duì)文件處理,;

3,、掌握Python中的統(tǒng)計(jì)函數(shù),輕松進(jìn)行統(tǒng)計(jì)分析,。

文章圖片1

第七節(jié).數(shù)組操作

我們將數(shù)組操作分成以下幾種類型,,然后分別介紹

  • 數(shù)組變形
  • 數(shù)組翻轉(zhuǎn)
  • 數(shù)組連接
  • 數(shù)組分割

數(shù)組變形

可以實(shí)現(xiàn)數(shù)組變形的函數(shù)有好幾個(gè):

  1. reshape,最常見(jiàn)的也是最主要的數(shù)組變形函數(shù),??梢詫?shù)組從一個(gè)形狀轉(zhuǎn)變成另外一個(gè)不同的形狀。
  2. flatten,,可以將高維數(shù)組展開(kāi)成一維,。先建好一個(gè)數(shù)組A,然后輸出A.flatten()就可以完成降維。當(dāng)然,,我們可以選擇展開(kāi)式的秩序order,。如果order='F',就是按列展開(kāi),;如果order='C',,就是按行展開(kāi)。
  3. ravel,,它和flatten功能其實(shí)差不多,,可以將高維數(shù)組展開(kāi)成一維。而且默認(rèn)的展開(kāi)順序也是order='C',,即按行展開(kāi),。如果選擇order='F'就是按列展開(kāi)。

代碼:

import numpy as np
A = np.arange(0,12)
B = A.reshape(2,6)
C = B.flatten(order='F')
D = B.ravel()
print (A, '\n', B, '\n', C, '\n', D)

講解:

原始數(shù)組A是一個(gè)從0到11的一維數(shù)組,;B是通過(guò)reshape函數(shù)改造成2*6的二維數(shù)組,;C和D分別從B展開(kāi)降到一維。其中C是按列順序降維,,而D是按照行順序,。

運(yùn)行結(jié)果:

[ 0 1 2 3 4 5 6 7 8 9 10 11]

[[ 0 1 2 3 4 5]

[ 6 7 8 9 10 11]]

[ 0 6 1 7 2 8 3 9 4 10 5 11]

[ 0 1 2 3 4 5 6 7 8 9 10 11]

數(shù)組翻轉(zhuǎn)

從數(shù)學(xué)角度而言,二維數(shù)組就是矩陣,。在矩陣操作中,,有一項(xiàng)叫轉(zhuǎn)置,是將矩陣元素位置的行列互換,,比如原來(lái)在(1,2)這個(gè)位置的元素,,會(huì)和(2,1)這個(gè)位置的元素進(jìn)行互換,。在Numpy中我們有兩種方式來(lái)實(shí)現(xiàn)數(shù)組的翻轉(zhuǎn):

  1. transpose函數(shù),將被翻轉(zhuǎn)目標(biāo)A放到函數(shù)中,,像這樣np.transpose(A)就可以了,。
  2. .T,第二種辦法更加簡(jiǎn)便,,就行了直接在目標(biāo)數(shù)組A后面加個(gè).T,。

代碼:

A = np.arange(0,8).reshape(4,2)
B = np.transpose(A)
C = A.T   
print (A, '\n', B, '\n', C) 

講解:

A是一個(gè)4*2的數(shù)組,B和C分別通過(guò)兩種方式翻轉(zhuǎn)A,,雖然函數(shù)不同,,但是結(jié)果卻是一樣的。

運(yùn)行結(jié)果:

[[0 1]

[2 3]

[4 5]

[6 7]]

[[0 2 4 6]

[1 3 5 7]]

[[0 2 4 6]

[1 3 5 7]]

數(shù)組連接

數(shù)組連接顧名思義是將兩個(gè)或多個(gè)數(shù)組按照一定的方式連接起來(lái),,常用的數(shù)組連接有以下幾種函數(shù):

  1. concatenate函數(shù),,使用方式是把被連接的數(shù)組依次放進(jìn)去,用逗號(hào)隔開(kāi),,再用括號(hào)括起來(lái),;還有一個(gè)參數(shù)axis來(lái)指定按照哪一個(gè)軸連接,。axis默認(rèn)值是0,,意思是沿著第一個(gè)軸連接,如果你設(shè)置成1,那么就是沿著第二個(gè)軸連接,。
  2. stack函數(shù),,它和concatenate函數(shù)有一點(diǎn)不同。stack函數(shù)更多是一種堆疊,,會(huì)在原來(lái)的維度上增加一個(gè)維度,;而concatenate不會(huì)增加維度。
  3. hstack函數(shù),,它是stack函數(shù)的變種,,其中h的意思是horizontal,水平的。顧名思義,,它會(huì)將數(shù)組按水平的方式連接,。關(guān)鍵是hstack不像stack一樣增加維度,這一點(diǎn)是很好的,。
  4. vstack函數(shù),,也是stack函數(shù)的變種,其中v的意思是vertical,,垂直的,。顧名思義,它會(huì)將數(shù)組按豎直的方式連接,。

代碼:

A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
print (np.concatenate((A,B),axis = 1))
print (np.stack((A,B),1))
print (np.hstack((A,B)))
print (np.vstack((A,B)))

講解:

A和B都是2*2的數(shù)組,,我們分別用四個(gè)函數(shù)去連接它們,。第一個(gè)是concatenate函數(shù),axis=1表示沿著第二個(gè)軸,,也就是水平連接,;第二個(gè)是stack函數(shù),同樣是沿著第二個(gè)軸,,在這里我們省略了axis參數(shù),;第三個(gè)是hstack,豎直方向連接,;第四個(gè)是vstack,,水平方向連接。

運(yùn)行結(jié)果:

[[1 2 5 6]

[3 4 7 8]]

[[[1 2]

[5 6]]

[[3 4]

[7 8]]]

[[1 2 5 6]

[3 4 7 8]]

[[1 2]

[3 4]

[5 6]

[7 8]]

數(shù)組分割

數(shù)組分割相當(dāng)于數(shù)組連接的逆向操作,,將一個(gè)大數(shù)組分割成好幾個(gè)數(shù)組,。常用的函數(shù)有三個(gè):

  1. split函數(shù),這個(gè)函數(shù)有三個(gè)參數(shù),。第一個(gè)參數(shù)ary就是被分割的數(shù)組,,第二參數(shù)叫indices_or_sections:果是一個(gè)整數(shù),就用該數(shù)平均切分,,如果是一個(gè)數(shù)組,,為沿軸切分的位置(左開(kāi)右閉),第三個(gè)參數(shù)axis是按照哪個(gè)軸切分,。
  2. hsplit函數(shù),,水平方向上切分。
  3. vsplit函數(shù),,豎直方向上切分,。

代碼:

A = np.arange(0,16).reshape(4,4)
print (np.split(A,2))
print (np.hsplit(A,2))    
print (np.vsplit(A,2)) 

講解:

A是一個(gè)4*4的二維數(shù)組,我們用了三種方式去分割,。

運(yùn)行結(jié)果:

[array([[0, 1, 2, 3],

[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],

[12, 13, 14, 15]])]

[array([[ 0, 1],

[ 4, 5],

[ 8, 9],

[12, 13]]), array([[ 2, 3],

[ 6, 7],

[10, 11],

[14, 15]])]

[array([[0, 1, 2, 3],

[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],

[12, 13, 14, 15]])]

第八節(jié).NumPy字符串

一直以來(lái),,我們處理的都是由數(shù)字組成的NumPy數(shù)組,其實(shí)NumPy中字符串也十分重要,,尤其是在涉及到文件處理的時(shí)候,,因?yàn)楹芏辔募热鐃xt文檔只支持字符串(string)格式的讀寫(xiě)。因此學(xué)會(huì)常用NumPy字符串函數(shù)是很有必要的,。

字符串連接

負(fù)責(zé)字符串連接的有兩個(gè)函數(shù),,

  1. 第一個(gè)是加法add函數(shù),字符串加法其實(shí)就是連接,,將兩個(gè)字符串?dāng)?shù)組中的字符串連接在一起,。
  2. 第二個(gè)是乘法multiply函數(shù)。字符串乘法可以看成加法的延展,,將字符串復(fù)制好幾倍然后拼接在一起,。

代碼:

import numpy as np
print(np.char.add(['hello'],[' world']))
print(np.char.add(['hello','hi'],[' world',' universe']))
print(np.char.multiply('Love you ',3))

講解:

我們發(fā)現(xiàn)當(dāng)加法函數(shù)中的數(shù)組里面字符串元素不止一個(gè)的時(shí)候,,連接會(huì)按照一一對(duì)應(yīng)的方式配對(duì)連接。

運(yùn)行結(jié)果:

['hello world']

['hello world' 'hi universe']

Love you Love you Love you

大小寫(xiě)

表格中關(guān)于大小寫(xiě)的函數(shù)有四個(gè),,我們分別來(lái)看看它們都是什么功能,。

  1. 第一個(gè)函數(shù)capitalize將首字母轉(zhuǎn)換成大寫(xiě),目的是針對(duì)寫(xiě)文章的情景,,需要把句子中第一個(gè)單詞的首字母大寫(xiě),,比較實(shí)用。
  2. 第二個(gè)函數(shù)title是讓字符串的每個(gè)單詞的第一個(gè)字母變成大寫(xiě),,和函數(shù)名呼應(yīng),,這個(gè)函數(shù)的功能是針對(duì)文章標(biāo)題用的,可以把字符串方便轉(zhuǎn)換成文章的標(biāo)題,。
  3. 第三個(gè)函數(shù)lower是將數(shù)組中每個(gè)元素轉(zhuǎn)換成小寫(xiě),。
  4. 第四個(gè)函數(shù)upper是將數(shù)組中每個(gè)元素轉(zhuǎn)換成大寫(xiě)。

代碼:

print (np.char.capitalize('love you'))
print (np.char.title('i love you'))
print (np.char.lower('LOVE YOU'))
print (np.char.upper('love you'))

講解:

我們分別用例子嘗試了一下大小寫(xiě)函數(shù),,還是非常容易的,。

運(yùn)行結(jié)果:

Love you

I Love You

love you

LOVE YOU

符號(hào)分割

分割操作在處理文件時(shí)候很重要,因?yàn)槲覀円话阋砸欢ǜ袷?,比如用逗?hào)或者空格隔開(kāi)數(shù)據(jù)而且每一行格式盡量一樣,。我們介紹兩種分割函數(shù),它們復(fù)制不同尺度:

  1. 第一個(gè)是split函數(shù),,通過(guò)指定分隔符對(duì)字符串進(jìn)行分割,,并返回?cái)?shù)組。分隔符的默認(rèn)值空格,。
  2. 第二個(gè)是splitlines函數(shù),從名字可以看出來(lái)分割行的,,其根據(jù)換行符來(lái)分割字符串,。

代碼:

print (np.char.split ('www.youtube.com', sep = '.'))
print (np.char.splitlines('i\nlove you.'))

講解:

注意到調(diào)用行分割的時(shí)候,我們字符串中\(zhòng)n是換行符,,因此會(huì)在這個(gè)位置進(jìn)行分割,。

運(yùn)行結(jié)果:

['www', 'youtube', 'com']

['i', 'love you.']

符號(hào)連接

既然有按照符號(hào)進(jìn)行分割,其逆操作按符號(hào)進(jìn)行連接,。這個(gè)函數(shù)就是join.

代碼:

print (np.char.join([':','-'],['love','google']))

講解:

這里有兩個(gè)連接符冒號(hào)和一橫,,分別對(duì)應(yīng)兩個(gè)字符串。

運(yùn)行結(jié)果:

['l:o:v:e' 'g-o-o-g-l-e']

第九節(jié).NumPy統(tǒng)計(jì)函數(shù)

最大,,最小值

  • amin函數(shù)用于計(jì)算數(shù)組中的最小值
  • amax函數(shù)用于計(jì)算數(shù)組中的最大值

如果我們指定某個(gè)軸,,那么它們將會(huì)返回沿著軸的的最大或者最小的元素,即一個(gè)一維數(shù)組,。當(dāng)軸的參數(shù)是0的時(shí)候,,會(huì)返回沿著縱軸最大或者最小元素,;當(dāng)軸的參數(shù)是1的時(shí)候,會(huì)返回沿著橫軸最大或者最小的元素,。如果我們不設(shè)定軸的參數(shù),,那么結(jié)果會(huì)返回這個(gè)數(shù)組的最大或者最小的元素。

代碼:

import numpy as np
A = np.arange(12).reshape(3,4)
print (np.amin(A,0))
print (np.amax(A,1))
print (np.amax(A))

講解:

我們建立了一個(gè)形狀為(3,4)的數(shù)組,。第一個(gè)是求沿著縱軸每個(gè)列中最小的元素,,因?yàn)閿?shù)組有四列,因而會(huì)選出四個(gè)數(shù)字,;第二個(gè)是求沿著橫軸每個(gè)行中最大的元素,,因?yàn)閿?shù)組有三行,因而會(huì)選出三個(gè)數(shù)字,。最后我們沒(méi)有設(shè)定軸,,因?yàn)闀?huì)返回A數(shù)組中最大的元素。

運(yùn)行結(jié)果:

[0 1 2 3]

[ 3 7 11]

11

中位數(shù),,平均值,,方差

  • median函數(shù)負(fù)責(zé)計(jì)算數(shù)組的中位數(shù),其關(guān)于軸參數(shù)的設(shè)置規(guī)則和上面的是一樣,,如果設(shè)置成0或1就會(huì)沿著縱軸或者橫軸計(jì)算中位數(shù),,如果不設(shè)置參數(shù)的話,就是計(jì)算整個(gè)數(shù)組的中位數(shù)
  • mean函數(shù)會(huì)計(jì)算數(shù)組的平均值,,也分為沿著軸計(jì)算或者整個(gè)數(shù)組計(jì)算,,規(guī)則同上面一樣。
  • 標(biāo)準(zhǔn)差函數(shù)std,,方差函數(shù)是var,。其中標(biāo)準(zhǔn)差的平方是方差。我們用最簡(jiǎn)單的一位數(shù)組做實(shí)驗(yàn):

代碼:

A = np.arange(9).reshape(3,3)
print (np.median(A))
print (np.median(A,0))
print (np.median(A,1))
print (np.mean(A))
print (np.mean(A,0))
print (np.mean(A,1))

講解:

這次我們建立了一個(gè)形狀為(3,3)的數(shù)組,,把三種關(guān)于軸參數(shù)的情況都試了一次,,大家對(duì)照規(guī)則自己想一下答案,再和打印結(jié)果對(duì)照一下,。按照慣例,,mean函數(shù)的三種用法都嘗試一遍。注意到,,結(jié)果會(huì)同中位數(shù)結(jié)果一樣,,因?yàn)锳數(shù)組行或列的均值也是中位數(shù)。

運(yùn)行結(jié)果:

4.0

[3. 4. 5.]

[1. 4. 7.]

4.0

[3. 4. 5.]

[1. 4. 7.]

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多