1. 程式人生 > >教程|Python之Numpy ndarray 基本介紹 3

教程|Python之Numpy ndarray 基本介紹 3

教程|Python之Numpy ndarray 基本介紹 3

 

教程|Python之Numpy ndarray 基本介紹 3

 

訪問flyai.club,一鍵建立你的人工智慧專案

教程|Python之Numpy ndarray 基本介紹 3

 

教程|Python之Numpy ndarray 基本介紹 2

知識點8. 基本的索引和切片

NumPy陣列的索引是一個內容豐富的主題,因為選取資料子集或單個元素的方式有很多。一維陣列很簡單。從表面上看,它們跟Python列表的功能差不多:

教程|Python之Numpy ndarray 基本介紹 3

 

如上所示,當你將一個標量值賦值給一個切片時(如arr[5:8]=12),該值會自動傳播到整個選區。跟列表最重要的區別在於,陣列切片是原始陣列的檢視。這意味著資料不會被複制,檢視上的任何修改都會直接反映到源陣列上。

作為例子,先建立一個arr的切片:

教程|Python之Numpy ndarray 基本介紹 3

 

現在,當我修稿arr_slice中的值,變動也會體現在原始陣列arr中:

教程|Python之Numpy ndarray 基本介紹 3

 

如果你剛開始接觸NumPy,可能會對此感到驚訝(尤其是當你曾經用過其他熱衷於複製陣列資料的程式語言)。由於NumPy的設計目的是處理大資料,所以你可以想象一下,假如NumPy堅持要將資料複製來複制去的話會產生何等的效能和記憶體問題。

注意:如果你想要得到的是ndarray切片的一份副本而非檢視,就需要明確地進行復制操作,例如arr[5:8].copy()。

對於高維度陣列,能做的事情更多。在一個二維陣列中,各索引位置上的元素不再是標量而是一維陣列:

教程|Python之Numpy ndarray 基本介紹 3

 

因此,可以對各個元素進行遞迴訪問,但這樣需要做的事情有點多。你可以傳入一個以逗號隔開的索引列表來選取單個元素。也就是說,下面兩種方式是等價的:

教程|Python之Numpy ndarray 基本介紹 3

 

在多維陣列中,如果省略了後面的索引,則返回物件會是一個維度低一點的ndarray(它含有高一級維度上的所有資料)。因此,在2×2×3陣列arr3d中:

教程|Python之Numpy ndarray 基本介紹 3

 

arr3d[0]是一個2×3陣列:

教程|Python之Numpy ndarray 基本介紹 3

 

標量值和陣列都可以被賦值給arr3d[0]:

教程|Python之Numpy ndarray 基本介紹 3

 

相似的,arr3d[1,0]可以訪問索引以(1,0)開頭的那些值(以一維陣列的形式返回):

教程|Python之Numpy ndarray 基本介紹 3

 

雖然是用兩步進行索引的,表示式是相同的:

教程|Python之Numpy ndarray 基本介紹 3

 

知識點9. 切片索引

教程|Python之Numpy ndarray 基本介紹 3

 

對於之前的二維陣列arr2d,其切片方式稍顯不同

教程|Python之Numpy ndarray 基本介紹 3

 

可以看出,它是沿著第0軸(即第一個軸)切片的。也就是說,切片是沿著一個軸向選取元素的。表示式arr2d[:2]可以被認為是“選取arr2d的前兩行”。

你可以一次傳入多個切片,就像傳入多個索引那樣:

教程|Python之Numpy ndarray 基本介紹 3

 

像這樣進行切片時,只能得到相同維數的陣列檢視。通過將整數索引和切片混合,可以得到低維度的切片。

例如,我可以選取第二行的前兩列:

教程|Python之Numpy ndarray 基本介紹 3

 

相似的,還可以選擇第三列的前兩行:

教程|Python之Numpy ndarray 基本介紹 3

 

注意,“只有冒號”表示選取整個軸,因此你可以像下面這樣只對高維軸進行切片:

教程|Python之Numpy ndarray 基本介紹 3

 

教程|Python之Numpy ndarray 基本介紹 3

 

教程|Python之Numpy ndarray 基本介紹 3

 

教程|Jupyter Notebook初級教程——迷死人的基礎操作

教程|Jupyter Notebook基礎教程——快捷鍵的使用

教程|Python之Numpy ndarray 基本介紹 1

教程|Python之Numpy ndarray 基本介紹 2

點選 瞭解更多 ,動手操作

— End —

教程|Python之Numpy ndarray 基本介紹 3

 

教程|Python之Numpy ndarray 基本介紹 3