Numpy的切片索引與高級(jí)索引怎么使用

這篇“Numpy的切片索引與高級(jí)索引怎么使用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Numpy的切片索引與高級(jí)索引怎么使用”文章吧。

沁源ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

一、Numpy的切片索引

1.1 使用slice內(nèi)置函數(shù)(不常用)

ndarray對(duì)象的內(nèi)容可以通過切片來訪問,與 Python 中 list 的切片操作完全一樣。 使用slice 并設(shè)置start, stop 及 step 參數(shù)進(jìn)行;舉例如下:

a = slice(2,9,2)    # 2為起點(diǎn),9為終點(diǎn),間隔為2
b = np.arange(0,10,1)  # b: [0 1 2 3 4 5 6 7 8 9]
print(b[a])   # 輸出:[2 4 6 8]

1.2 使用 [] 切片 (常用,*** 非常重要***)

使用方式與slice相同,上面的例子可以書寫為:

b = np.arange(0,10,1)
print(b[2:9:2])    # 輸出:[2 4 6 8]

注意:

1.2.1  針對(duì)一維數(shù)組
  1. 切片時(shí),中括號(hào)[]內(nèi)數(shù)字之間的符號(hào)為冒號(hào), 參數(shù)為:start:stop:step

  2. 若中括號(hào)[]內(nèi)只有一個(gè)數(shù)字,則返回該索引對(duì)應(yīng)的值;例如:b[2] 則返回 2

  3. 若中括號(hào)[][2:],則返回起始位置與后面的所有值;例如:b[2:] 則返回 [2 3 4 5 6 7 8 9]

  4. 若中括號(hào)[][2:6],則返回起始位置與終止位置之間的所有值;例如:b[2:6],返回[2 3 4 5]

1.2.2   針對(duì)二維數(shù)組,與一維數(shù)組類似,可以用冒號(hào):代替所有

舉例如下:

a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print (a[:,1])   # 第2列元素,輸出:[2 4 5]
print (a[1,:])   # 第2行元素,輸出:[3 4 5]
print (a[:,1:])  # 第2列及剩下的所有元素,輸出:[[2 3]  [4 5] [5 6]]

二、Numpy的高級(jí)索引

2.1 布爾索引 (常用,*** 非常重要***)

在高級(jí)索引中,最為有用的便是:布爾索引; 簡(jiǎn)單來說就是,在切片的中括號(hào)內(nèi)[],使用篩選條件,該條件會(huì)返回一個(gè)布爾數(shù)據(jù)作為Mask,將需要的數(shù)據(jù)選取出來;實(shí)際上,我們并不需要知道Numpy是如何選取出來數(shù)據(jù)的,只要只要如何使用即可;舉例如下:

b = np.arange(0,10,1)
print(b[b>5])    # [6 7 8 9]
print(b[(b>5) & (b<8)])   # [6 7]

注意點(diǎn)一:應(yīng)用多個(gè)條件時(shí),可以使用 &, 各個(gè)條件需要放在()內(nèi);如上例中的:b[(b>5) & (b<8)]注意點(diǎn)二:布爾索引不一定要對(duì)數(shù)組中的所有元素,也可以針對(duì)某一行或者某一列進(jìn)行篩選;舉例如下:

a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(a[(a[:,0]>2) & (a[:,1]<10)])  
# 輸出:[[4 5 6] [7 8 9]]
# (a[:,0]>2) 選擇出第一列大于2的所有行;
# (a[:,1]<10) 選擇出第二列小于10的所有行,然后取交集得到最后結(jié)果;

2.2 花式索引

花式索引(Fancyindexing)是一個(gè)NumPy術(shù)語,它指的是利用整數(shù)數(shù)組進(jìn)行索引。假設(shè)我們有一個(gè)8×4數(shù)組:

a = np.arange(32).reshape(8,4)

Numpy的切片索引與高級(jí)索引怎么使用

通過花式索引,我們可以進(jìn)行如下操作:

選出指定的行,例如選出第1,3,5,7 行: print(a[[1,3,5,7]]),  輸出為:

Numpy的切片索引與高級(jí)索引怎么使用

也可以傳入負(fù)數(shù),選出倒數(shù)的行,例如選出最后3行: print(a[[-3,-2,-1]]), 輸出為:

Numpy的切片索引與高級(jí)索引怎么使用

也可以傳入多個(gè)索引數(shù)組,返回對(duì)應(yīng)值的一維數(shù)組,例如選出 (2,2), (3,3), (5,3) 三個(gè)數(shù): print(a[[2,3,5],[2,3,3]]) , 輸出為:

Numpy的切片索引與高級(jí)索引怎么使用

選出指定的列,例如選出第0,1, 3列:print(a[:,[1,2,3]]) , 輸出為:

Numpy的切片索引與高級(jí)索引怎么使用

選出指定的行與指定的列,例如選出第0,2,3列,第2,5,6 行的一個(gè)3*3數(shù)組; print(a[[2,5,6]][:,[0,2,3]]), 輸出為:

Numpy的切片索引與高級(jí)索引怎么使用

在上面的基礎(chǔ)上,還可以通過交換輸入的順序,調(diào)整輸出的順序,例如:想要調(diào)換2,3列的順序,同時(shí)調(diào)換 2,6 行的順序;print(a[[6,5,2]][:,[0,3,2]])

Numpy的切片索引與高級(jí)索引怎么使用

以上就是關(guān)于“Numpy的切片索引與高級(jí)索引怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站欄目:Numpy的切片索引與高級(jí)索引怎么使用
分享地址:http://bm7419.com/article6/geehog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、ChatGPT、網(wǎng)站設(shè)計(jì)公司、營銷型網(wǎng)站建設(shè)、電子商務(wù)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管