Numpy 理解ndarray對象的示例代碼
numpy作為python科學計算的基礎模塊,支撐起了pandas、matplotlib等使用。其中,ndarray作為numpy的重要使用對象不得不研究理解一下。
ndarray,存儲單一數(shù)據(jù)類型的多維數(shù)組結構,在內存中連續(xù)存在,以行索引和列索引的方式標記數(shù)組中的每一個元素。采用預編譯好的C語言代碼,性能上的表現(xiàn)十分不錯。
1、ndarray的數(shù)據(jù)結構

2、ndarray的創(chuàng)建
numpy主要有以下幾種方式創(chuàng)建數(shù)組。除此之外,其他過程也可能產(chǎn)生數(shù)組,比如:cv2.imread讀取圖片,返回數(shù)組。
np.array() # 傳入類數(shù)組數(shù)據(jù)結構,list,tuple等,或者其他嵌套序列。返回的維度依據(jù)傳入的數(shù)據(jù)而定 np.linspace() # 根據(jù)給定的間距生成等差序列,指定元素數(shù)量,返回一維數(shù)組 np.arange()# 根據(jù)給定的間距生成等差序列,指定步長。返回一維數(shù)組 np.ones() # 根據(jù)傳入的shape,返回一個元素全是1的數(shù)組 np.zeros() # 根據(jù)傳入的shape,返回一個元素全是0的數(shù)組 np.full() # 根據(jù)傳入的shape和value,返回一個元素全是value的數(shù)組,比前面兩個靈活 np.empty() # 根據(jù)傳入的shape,返回一個元素全是隨機化而不是空值的數(shù)組 np.genfromtxt() # 從文本文件讀取生成一個數(shù)組
3、ndarray的抽象理解
先創(chuàng)建一個三個數(shù)組,一維、二維、三維。
arr1 = np.arange(3)
arr1
array([0, 1, 2])
---------------------------------------------------------
arr2 = np.arange(9).reshape(3,3)
arr2
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
----------------------------------------------------------
arr3 = np.arange(27).reshape(3,3,3)
arr3
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
在python中的arr結構如上所示。我們將其形象化表示出來,如下圖。
一維數(shù)組只有一個維度,也叫rank,只有一個axis軸,axis=0。
二維數(shù)組有兩個維度,有兩個axis軸,axis=0和1。
三維數(shù)組有三個維度,有三個axis軸,axis=0、1、2。

我們直接在三維上執(zhí)行索引操作,來理解ndarray的排布。
arr3[1,2,1] 輸出16
索引[1,2,1]依次從高維到低維,從axis軸2到1到0,1指三維上的第2個元素,即上圖中間的數(shù)組,是一個二維數(shù)組。2指二維上的第3個元素,是一個一維數(shù)組。1值一維上的第2個元素。也可以試著從軸方向去理解索引的原理。
可以自己操作一下下面索引代碼,看看出結果。
arr3[3,3,2]
不同維度的ndarray shape理解如下??梢酝ㄋ椎恼J為是從點帶面,再到塊。

4、ndarray的操作
主要有索引、切片、過濾等,后續(xù)細談。只要理解了ndarray,操作其實很簡單。
Refer:
[1] https://danzhuibing.github.io/py_numpy_ndarray.html
[2] https://www.geeksforgeeks.org/numpy-ndarray/
到此這篇關于Numpy 理解ndarray對象的示例代碼的文章就介紹到這了,更多相關Numpy ndarray對象內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python Flask 請求數(shù)據(jù)獲取響應詳解
這篇文章主要介紹了Python Flask請求數(shù)據(jù)獲取響應的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-10-10
在django中使用post方法時,需要增加csrftoken的例子
這篇文章主要介紹了在django中使用post方法時,需要增加csrftoken的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
pytorch + visdom CNN處理自建圖片數(shù)據(jù)集的方法
這篇文章主要介紹了pytorch + visdom CNN處理自建圖片數(shù)據(jù)集的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
詳解pycharm連接遠程linux服務器的虛擬環(huán)境的方法
這篇文章主要介紹了pycharm連接遠程linux服務器的虛擬環(huán)境的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

