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

Python培訓(xùn):代碼編程教學(xué)入門——整數(shù)索引和切片的基本使用

更新時(shí)間:2022-09-05 來源:黑馬程序員 瀏覽量:

  ndarray對象的元素可以通過索引和切片來訪問和修改,就像Python內(nèi)置的容器對象一樣。下面是一個(gè)一維數(shù)組,從表面上來看,該數(shù)組使用索引和切片的方式與Python列表的功能相差不大,具體代碼如下。

In [53]: import numpy as np
In [54]: arr=np.arange(8)          # 創(chuàng)建一個(gè)一維數(shù)組
In [55]: arr
Out[55]: array([0, 1, 2, 3, 4, 5, 6, 7])
In [56]: arr[5]                          # 獲取索引為5的元素
Out[56]: 5
In [57]: arr[3:5]                        # 獲取索引為3~5的元素,但不包括5
In [58]: arr[1:6:2]                      # 獲取索引為1~6的元素,步長為2
Out[58]: array([1, 3, 5])

  不過,對于多維數(shù)組來說,索引和切片的使用方式與列表就不大一樣了。在二維數(shù)組中,每個(gè)索引位置上的元素不再是一個(gè)標(biāo)量了,而是一個(gè)一維數(shù)組,具體示例代碼如下。

In [59]: import numpy as np
In [60]: arr2d=np.array([1, 2, 3],[4,5,6],[7,8,9]) # 創(chuàng)建二維數(shù)組
In [61]: arr2d
Out[61]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
In [62]: arr2d[1]                         # 獲取索引為1的元素
Out[62]: array([4, 5, 6])

  此時(shí),如果我們想通過索引的方式來獲取二維數(shù)組的單個(gè)元素,就需要通過形如“arr[x,y]”,以逗號分隔的索引來實(shí)現(xiàn)。其中,x表示行號,y表示列號。示例代碼如下。

In [63]: arr2d[0, 1]                      # 獲取位于第0行第1列的元素
Out[63]: 2

  接下來,通過一張圖來描述數(shù)組arr2d的索引方式,如圖2-3所示。從圖2-3中可以看出,arr2d是一個(gè)3行3列的數(shù)組,如果我們想獲取數(shù)組的單個(gè)元素,必須同時(shí)指定這個(gè)元素的行索引和列索引。例如,獲取索引位置為第1行第1列的元素,我們可以通過arr2d[1,1]來實(shí)現(xiàn)。

  相比一維數(shù)組,多維數(shù)組的切片方式花樣更多,多維數(shù)組的切片是沿著行與列的方向選取元素的,我們可以傳入一個(gè)切片,也可以傳入多個(gè)切片,還可以將切片與整數(shù)索引混合使用。

1662344942288_arr2d的索引方式.jpg

  圖2-3 arr2d的索引方式

  傳入一個(gè)切片的示例代碼:

In [64]: arr2d[:2]
Out[64]:
array([[1, 2, 3],
       [4, 5, 6]])

  傳入兩個(gè)切片的示例代碼:

In [65]: arr2d[0:2, 0:2]
Out[65]:
array([[1, 2],
       [4, 5]])

  切片與整數(shù)索引混合使用的示例代碼:

In [66]: arr2d[1, :2]
Out[66]: array([4, 5])

  上述多維數(shù)組切片操作的相關(guān)示意圖,如圖2-4所示。

1662344971401_多維數(shù)組切片圖示.jpg

  圖2-4 多維數(shù)組切片圖示

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