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

2、ndarray的創(chuàng)建
numpy主要有以下幾種方式創(chuàng)建數(shù)組。除此之外,其他過(guò)程也可能產(chǎn)生數(shù)組,比如:cv2.imread讀取圖片,返回?cái)?shù)組。
np.array() # 傳入類數(shù)組數(shù)據(jù)結(jié)構(gòu),list,tuple等,或者其他嵌套序列。返回的維度依據(jù)傳入的數(shù)據(jù)而定 np.linspace() # 根據(jù)給定的間距生成等差序列,指定元素?cái)?shù)量,返回一維數(shù)組 np.arange()# 根據(jù)給定的間距生成等差序列,指定步長(zhǎng)。返回一維數(shù)組 np.ones() # 根據(jù)傳入的shape,返回一個(gè)元素全是1的數(shù)組 np.zeros() # 根據(jù)傳入的shape,返回一個(gè)元素全是0的數(shù)組 np.full() # 根據(jù)傳入的shape和value,返回一個(gè)元素全是value的數(shù)組,比前面兩個(gè)靈活 np.empty() # 根據(jù)傳入的shape,返回一個(gè)元素全是隨機(jī)化而不是空值的數(shù)組 np.genfromtxt() # 從文本文件讀取生成一個(gè)數(shù)組
3、ndarray的抽象理解
先創(chuàng)建一個(gè)三個(gè)數(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結(jié)構(gòu)如上所示。我們將其形象化表示出來(lái),如下圖。
一維數(shù)組只有一個(gè)維度,也叫rank,只有一個(gè)axis軸,axis=0。
二維數(shù)組有兩個(gè)維度,有兩個(gè)axis軸,axis=0和1。
三維數(shù)組有三個(gè)維度,有三個(gè)axis軸,axis=0、1、2。

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

4、ndarray的操作
主要有索引、切片、過(guò)濾等,后續(xù)細(xì)談。只要理解了ndarray,操作其實(shí)很簡(jiǎn)單。
Refer:
[1] https://danzhuibing.github.io/py_numpy_ndarray.html
[2] https://www.geeksforgeeks.org/numpy-ndarray/
到此這篇關(guān)于Numpy 理解ndarray對(duì)象的示例代碼的文章就介紹到這了,更多相關(guān)Numpy ndarray對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm安裝AI編程工具Fitten Code全過(guò)程
FittenCode是一款免費(fèi)的AI編程助手,支持代碼生成、調(diào)試、對(duì)話及語(yǔ)言轉(zhuǎn)換,可在PyCharm中安裝使用,通過(guò)插件功能提升開(kāi)發(fā)效率,實(shí)現(xiàn)代碼補(bǔ)全、語(yǔ)言轉(zhuǎn)化等操作,適合解決編程問(wèn)題和優(yōu)化開(kāi)發(fā)流程2025-09-09
Python永久配置國(guó)內(nèi)鏡像源安裝再也不用擔(dān)心卡頓
這篇文章主要為大家介紹了Python如何永久配置國(guó)內(nèi)鏡像源,從此安裝再也不用擔(dān)心卡頓,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10
Python讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇Python讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
Python使用Matplotlib和Seaborn繪制常用圖表的技巧
Python作為數(shù)據(jù)科學(xué)領(lǐng)域的明星語(yǔ)言,擁有強(qiáng)大且豐富的可視化庫(kù),其中最著名的莫過(guò)于 Matplotlib 和 Seaborn,本篇博客將作為數(shù)據(jù)可視化之旅的起點(diǎn),手把手帶領(lǐng)完全新手讀者,從零開(kāi)始學(xué)習(xí)如何使用Matplotlib和Seaborn繪制常用圖表,需要的朋友可以參考下2025-12-12
Django序列化中SerializerMethodField的使用詳解
這篇文章主要介紹了Django序列化中SerializerMethodField的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
python+selenium select下拉選擇框定位處理方法
今天小編就為大家分享一篇python+selenium select下拉選擇框定位處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
python求numpy中array按列非零元素的平均值案例
這篇文章主要介紹了python求numpy中array按列非零元素的平均值案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python調(diào)用C/C++函數(shù)庫(kù)的多種方法與實(shí)踐指南
Python作為一門高級(jí)編程語(yǔ)言,以其簡(jiǎn)潔的語(yǔ)法和豐富的庫(kù)生態(tài)贏得了開(kāi)發(fā)者的青睞,然而,在計(jì)算密集型任務(wù)中,Python的性能往往無(wú)法滿足要求,Python調(diào)用C/C++函數(shù)庫(kù)成為提升應(yīng)用性能的關(guān)鍵技術(shù)路徑,本文將深入探討Python調(diào)用C/C++函數(shù)庫(kù)的多種方法,需要的朋友可以參考下2025-08-08
Python實(shí)現(xiàn)滑動(dòng)平均(Moving Average)的例子
今天小編就為大家分享一篇Python實(shí)現(xiàn)滑動(dòng)平均(Moving Average)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08

