首頁(yè)技術(shù)文章正文

怎樣使用花式索引或布爾索引訪問(wèn)元素?

更新時(shí)間:2022-04-06 來(lái)源:黑馬程序員 瀏覽量:

除了整數(shù)索引之外,numpy 中還提供了兩個(gè)形式比較復(fù)雜的索引——花式索引和布爾索引,下面對(duì)這兩種索引的基本用法進(jìn)行詳細(xì)的講解。

1.花式索引

花式索引指以整數(shù)組成的數(shù)組或列表為索引。當(dāng)使用花式索引訪問(wèn)一維數(shù)組時(shí),程序會(huì)將花式索引對(duì)應(yīng)的數(shù)組或列表的元素作為索引,依次根據(jù)各個(gè)索引獲取對(duì)應(yīng)位置的元素,并將這些元素以數(shù)組的形式返回 ;當(dāng)使用花式索引訪問(wèn)二維數(shù)組時(shí),程序會(huì)將花式索引對(duì)應(yīng)的數(shù)組或列表的元素作為索引,依次根據(jù)各個(gè)索引獲取對(duì)應(yīng)位置的一行元素,并將這些行元素以數(shù)組的形式返回。接下來(lái),創(chuàng)建一個(gè)一維數(shù)組,使用花式索引獲取該數(shù)組的多個(gè)元素,代碼如下。

In []:   import numpy as npa
         rray_1d = np.arange(1, 10) 
         print(array_1d)
         print("------------")
         # 訪問(wèn)索引為[2,5,8]的元素
         print(array_1d[[2, 5, 8]])
Out []:  [1 2 3 4 5 6 7 8 9]
         ------------
         [3 6 9]

以上代碼首先創(chuàng)建了一個(gè)一維數(shù)組 array_1d,然后使用花式索引 [2,5,8] 訪問(wèn)了該數(shù)組,依次返回索引為 2、5、8 的數(shù)據(jù)。由輸出結(jié)果可知,程序返回了一個(gè)包含 3 個(gè)元素的數(shù)組。

接下來(lái),創(chuàng)建一個(gè)二維數(shù)組,使用花式索引獲取該數(shù)組的多行元素,代碼如下。

In []:   array_2d = np.arange(1, 10).reshape((3, 3)) 
         print(array_2d)
         # 訪問(wèn)索引為[0,2]的元素
         print(array_2d[[0, 2]])
Out []:  [[1 2 3]
         [4 5 6]
         [7 8 9]]
         ------------
         [[1 2 3]
         [7 8 9]]

需要說(shuō)明的是,在使用兩個(gè)花式索引,即通過(guò)“二維數(shù)組 [ 花式索引 , 花式索引 ]”的形式訪問(wèn)數(shù)組時(shí),會(huì)將第一個(gè)花式索引對(duì)應(yīng)數(shù)組或列表的各元素作為行索引,將第二個(gè)花式索引對(duì)應(yīng)數(shù)組或列表的各元素作為列索引,再按照“二維數(shù)組 [ 行索引 , 列索引 ]”的形式獲取對(duì)應(yīng)位置的元素。例如,使用兩個(gè)花式索引訪問(wèn)二維數(shù)組 array_2d 的元素,代碼如下。

In []:   # 使用兩個(gè)花式索引訪問(wèn)元素
         print(array_2d[[0, 2], [1, 1]])
Out []:  [2 8]

上述與二維數(shù)組相關(guān)的花式索引操作的示意如圖:

花式索引

2.布爾索引

布爾索引指以布爾值組成的數(shù)組或列表為索引。當(dāng)使用布爾索引訪問(wèn)數(shù)組時(shí),程序會(huì)將布爾索引對(duì)應(yīng)的數(shù)組或列表的元素作為索引,以獲取索引為 True 時(shí)對(duì)應(yīng)位置的元素。接下來(lái),創(chuàng)建一個(gè)二維數(shù)組,獲取該數(shù)組中值大于 5 的元素,代碼如下。

In  []:   array_2d = np.arange(1, 10).reshape((3, 3))    
          print(array_2d)
          print("------------")
          # 使用布爾索引訪問(wèn)元素
          print(array_2d > 5)
          print("------------")
          print(array_2d[array_2d > 5])
Out  []:  [[1 2 3] 
           [4 5 6] 
           [7 8 9]]
          ------------
          [[False False False] 
           [False False  True] 
           [ True  True  True]]
          ------------
          [6 7 8 9]

從輸出結(jié)果可以看出,程序返回了數(shù)組中與布爾數(shù)組 True 對(duì)應(yīng)的元素。上述二維數(shù)組相關(guān)的布爾索引操作的示意如圖 2-4 所示。

布爾索引




猜你喜歡:

數(shù)據(jù)庫(kù)索引是什么意思?

索引有什么作用?MongoDB中索引有幾種類型?

MySQL常用圖形管理工具有哪些?

Python培訓(xùn):使用boxplot()繪制箱形圖

黑馬程序員Python+大數(shù)據(jù)開發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!