Numpy 理解ndarray物件的示例程式碼
numpy作為python科學計算的基礎模組,支撐起了pandas、matplotlib等使用。其中,ndarray作為numpy的重要使用物件不得不研究理解一下。
ndarray,儲存單一資料型別的多維陣列結構,在記憶體中連續存在,以行索引和列索引的方式標記陣列中的每一個元素。採用預編譯好的C語言程式碼,效能上的表現十分不錯。
1、ndarray的資料結構
2、ndarray的建立
numpy主要有以下幾種方式建立陣列。除此之外,其他過程也可能產生陣列,比如:cv2.imread讀取圖片,返回陣列。
np.array() # 傳入類陣列資料結構,list,tuple等,或者其他巢狀序列。返回的維度依據傳入的資料而定 np.linspace() # 根據給定的間距生成等差序列,指定元素數量,返回一維陣列 np.arange()# 根據給定的間距生成等差序列,指定步長。返回一維陣列 np.ones() # 根據傳入的shape,返回一個元素全是1的陣列 np.zeros() # 根據傳入的shape,返回一個元素全是0的陣列 np.full() # 根據傳入的shape和value,返回一個元素全是value的陣列,比前面兩個靈活 np.empty() # 根據傳入的shape,返回一個元素全是隨機化而不是空值的陣列 np.genfromtxt() # 從文字檔案讀取生成一個數組
3、ndarray的抽象理解
先建立一個三個陣列,一維、二維、三維。
arr1 = np.arange(3) arr1 array([0,1,2]) --------------------------------------------------------- arr2 = np.arange(9).reshape(3,3) arr2 array([[0,2],[3,4,5],[6,7,8]]) ---------------------------------------------------------- arr3 = np.arange(27).reshape(3,3,3) arr3 array([[[ 0,[ 3,[ 6,8]],[[ 9,10,11],[12,13,14],[15,16,17]],[[18,19,20],[21,22,23],[24,25,26]]])
在python中的arr結構如上所示。我們將其形象化表示出來,如下圖。
一維陣列只有一個維度,也叫rank,只有一個axis軸,axis=0。
二維陣列有兩個維度,有兩個axis軸,axis=0和1。
三維陣列有三個維度,有三個axis軸,axis=0、1、2。
我們直接在三維上執行索引操作,來理解ndarray的排布。
arr3[1,2,1] 輸出16
索引[1,1]依次從高維到低維,從axis軸2到1到0,1指三維上的第2個元素,即上圖中間的陣列,是一個二維陣列。2指二維上的第3個元素,是一個一維陣列。1值一維上的第2個元素。也可以試著從軸方向去理解索引的原理。
arr3[3,2]
不同維度的ndarray shape理解如下。可以通俗的認為是從點帶面,再到塊。
4、ndarray的操作
主要有索引、切片、過濾等,後續細談。只要理解了ndarray,操作其實很簡單。
Refer:
[1] https://danzhuibing.github.io/py_numpy_ndarray.html
[2] https://www.geeksforgeeks.org/numpy-ndarray/
到此這篇關於Numpy 理解ndarray物件的示例程式碼的文章就介紹到這了,更多相關Numpy ndarray物件內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!