Numpy?三維數(shù)組索引與切片的實(shí)現(xiàn)
在本篇的開始之前,我必須闡明,我們對(duì)數(shù)組無論是索引還是切片,我是通過編號(hào)(或稱為序列號(hào))來進(jìn)行操作,請(qǐng)記?。簾o論是 0軸(行)還是 1軸(列),編號(hào)都是從0開始
這是一個(gè)三維數(shù)組,關(guān)于如何判斷所定義的是幾維數(shù)組,請(qǐng)觀察數(shù)組的開頭和結(jié)尾的中括號(hào)數(shù)目
import numpy as np #這是一個(gè) 2x2x3 的三維數(shù)組 arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]]]) print(arr)
在多維數(shù)組中,如果你忽略后續(xù)的索引參數(shù),他打印出的結(jié)果將會(huì)降低一個(gè)維度
我將會(huì)打印它的完整數(shù)組,以便大家用以比對(duì)
將定義的三維數(shù)組降低了一個(gè)維度,成為了二維數(shù)組
#打印以下結(jié)果 arrs = arr[1,2] #index 2 is out of bounds for axis 1 with size 2 索引2超出大小為2的軸1的范圍
我們可以分析一下出現(xiàn)這種問題的原因:
1,首先我這是索引,arr[1,2] 的含義是,取編號(hào)是1的行,編號(hào)是2的行,我們可以思考一下,三維數(shù)組降低一個(gè)維度應(yīng)是二維數(shù)組,二維數(shù)組降低一個(gè)維度應(yīng)是一維數(shù)組,arr[1,2]中的“1”呢,應(yīng)是三維數(shù)組中的編號(hào)為“1”的行,三維數(shù)組中編號(hào)為“1”的行,應(yīng)是一個(gè)二維數(shù)組,arr[1,2]中的“2”呢,應(yīng)該在二維數(shù)組的基礎(chǔ)上,就要降低一個(gè)維度,為一維數(shù)組,在下圖中一維數(shù)組只有兩行,編號(hào)分別為“0”和“1”哪里來的編號(hào)為“2”呢?是不是超出索引范圍了。
同樣對(duì)三維數(shù)組來說,我們也可以使用類似視圖的操作
arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]]]) print(arr) #打印以下結(jié)果 new_long = arr[0] new_long = 22 print(arr)
我們經(jīng)過將arr 三維數(shù)組中的編號(hào)為“0”的行arr[0]拿出來,賦值給了變量名new_long ,然后將new_long進(jìn)行重新賦值為 “22”,new_long的值其實(shí)就是 arr[0]的值,我們將三維數(shù)組arr的打印出來,顯然數(shù)組的元素值并沒有發(fā)生任何變化。有的同學(xué)會(huì)問這有什么意義呢?
我們可以對(duì)數(shù)組切片做同樣的操作來看看變化
import numpy as np #這是一個(gè) 2x2x3 的三維數(shù)組 arr =np.array( [[[0, 1 ,2] ,[3, 4, 5]] ,[[6 ,7, 8],[9,10,11]],[[12,13,14],[15,16,17]]]) print(arr) #打印以下結(jié)果 #我把a(bǔ)rr三維數(shù)組中編號(hào)為“1”,和編號(hào)為“2”的數(shù)組拿了出來賦值給一個(gè)新定義的變量名new_long new_long = arr[0:2] # print(new_long) #我對(duì)new_long中的數(shù)據(jù)進(jìn)行了篡改 new_long[0] = 22 # arr[0] = new_long #但是當(dāng)我打印最初定義的三維數(shù)組 arr時(shí),發(fā)現(xiàn)它的數(shù)據(jù)被篡改 print(arr)
你看發(fā)生了變化,我將三維數(shù)組中前兩行拿了出來,是兩個(gè)二維數(shù)組,然后我對(duì)第一個(gè)二維數(shù)組進(jìn)行篡改當(dāng)我再次打印最初定義的三維數(shù)組時(shí)發(fā)現(xiàn)它的數(shù)據(jù)發(fā)生了變化。最初定義的數(shù)組也被篡改了
說明了什么在numpy模塊中定義的數(shù)組無論是幾維,都遵循一個(gè)定義數(shù)組的切片是原數(shù)組的視圖,任何對(duì)于視圖的修改都會(huì)反映到原數(shù)組上。
到此這篇關(guān)于Numpy 三維數(shù)組索引與切片的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Numpy 三維數(shù)組索引與切片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python搭建服務(wù)器實(shí)現(xiàn)兩個(gè)Android客戶端間收發(fā)消息
這篇文章主要為大家詳細(xì)介紹了python搭建服務(wù)器實(shí)現(xiàn)兩個(gè)Android客戶端間收發(fā)消息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04python中用cantools和can工具包解析blf文件的方法
這篇文章主要給大家介紹了關(guān)于python中用cantools和can工具包解析blf文件的相關(guān)資料,blf數(shù)據(jù)不像mf4那樣自帶信號(hào)數(shù)據(jù)庫(kù),因?yàn)樗怯浫罩居玫?一般情況下要盡可能的小,需要的朋友可以參考下2023-09-09Python 實(shí)現(xiàn)3種回歸模型(Linear Regression,Lasso,Ridge)的示例
這篇文章主要介紹了Python 實(shí)現(xiàn) 3 種回歸模型(Linear Regression,Lasso,Ridge)的示例,幫助大家更好的進(jìn)行機(jī)器學(xué)習(xí),感興趣的朋友可以了解下2020-10-10Gauss-Seidel迭代算法的Python實(shí)現(xiàn)詳解
這篇文章主要介紹了Gauss-Seidel迭代算法的Python實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06Python遍歷文件夾和讀寫文件的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python遍歷文件夾和讀寫文件的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-08-08python基于tkinter制作無損音樂下載工具(附源碼)
這篇文章主要介紹了python基于tkinter制作無損音樂下載工具(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03基于tensorflow __init__、build 和call的使用小結(jié)
這篇文章主要介紹了基于tensorflow __init__、build 和call的使用小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02如何用scheduler實(shí)現(xiàn)learning-rate學(xué)習(xí)率動(dòng)態(tài)變化
這篇文章主要介紹了如何用scheduler實(shí)現(xiàn)learning-rate學(xué)習(xí)率動(dòng)態(tài)變化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09