溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Numpy的切片索引與高級索引怎么使用

發(fā)布時間:2022-11-03 17:34:59 來源:億速云 閱讀:164 作者:iii 欄目:編程語言

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

一、Numpy的切片索引

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

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

a = slice(2,9,2)    # 2為起點,9為終點,間隔為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  針對一維數(shù)組
  1. 切片時,中括號[]內(nèi)數(shù)字之間的符號為冒號, 參數(shù)為:start:stop:step

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

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

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

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

舉例如下:

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的高級索引

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

在高級索引中,最為有用的便是:布爾索引; 簡單來說就是,在切片的中括號內(nèi)[],使用篩選條件,該條件會返回一個布爾數(shù)據(jù)作為Mask,將需要的數(shù)據(jù)選取出來;實際上,我們并不需要知道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]

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

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)是一個NumPy術(shù)語,它指的是利用整數(shù)數(shù)組進行索引。假設(shè)我們有一個8×4數(shù)組:

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

Numpy的切片索引與高級索引怎么使用

通過花式索引,我們可以進行如下操作:

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

Numpy的切片索引與高級索引怎么使用

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

Numpy的切片索引與高級索引怎么使用

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

Numpy的切片索引與高級索引怎么使用

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

Numpy的切片索引與高級索引怎么使用

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

Numpy的切片索引與高級索引怎么使用

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

Numpy的切片索引與高級索引怎么使用

以上就是關(guān)于“Numpy的切片索引與高級索引怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI