numpy學習 難點解析(三)多維陣列切片祥解

2021-08-31 15:59:34 字數 1059 閱讀 5916

numpy的陣列操作中,常常會用到切片處理,一般朋友在學習過程中,很多教程會以二維陣列取行或列來舉例,但是遇到更多維度的陣列如何取值呢?

下面對陣列的切片進行詳細的解釋:

首先上個例子:

#建立乙個三維陣列

a = np.arange(60).reshape(3,4,5)

#展示一下a的結構

----------------------------------------------

[[[ 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 27 28 29]

[30 31 32 33 34]

[35 36 37 38 39]]

[[40 41 42 43 44]

[45 46 47 48 49]

[50 51 52 53 54]

[55 56 57 58 59]]]

----------------------------------------------

#取shape中最外層維度的資料,可以使用a[n,:,:],n為索引如

a[1,:,:]

>>>[[20 21 22 23 24]

[25 26 27 28 29]

[30 31 32 33 34]

[35 36 37 38 39]]

#取任意層維度的資料,即在對應的位置取對應的索引即可

a[:,1,:]

>>>[[ 5 6 7 8 9]

[25 26 27 28 29]

[45 46 47 48 49]]

a[:,:,1]

>>>[[ 1 6 11 16]

[21 26 31 36]

[41 46 51 56]]

根據結果可以看到,實際上在陣列切片的過程中,使用的方法和字串、列表的取值方法是類似的,只不過是需要按照維度的順序,由高維度向低維度的順序取值。

PROTOTYPE模式難點解析

這個模式在c 中什麼時候才會使用,為什麼不直接new,大家只要明白乙個場景,就會知道它的用處。比如,現在讓你設計乙個遊戲,一共有8個關卡,每關的小兵有四種,但是第一關的小兵最弱,第八關的小兵最強,你怎麼設計?你可能認為這還不簡單,需要小兵的時候,直接new乙個相應的小兵,就可以了。但是這樣做會遇見乙...

面試疑難點解析

list,set,map,有什麼區別?list和set實際上市實現了collection介面,那麼collection介面的原理你能簡單描述一下嗎?list介面可以插入多個null值,並且重複值,而且list是乙個有序的集合。set是乙個不可重複的集合,裡面的元素都只出現,最多隻出現1次,並且set...

資料庫考研難點解析

這裡介紹一下自己在準備考研複試時對於資料庫這門可的知識點總結,本科期間上課沒聽懂,後來自己經歷考研,把常見的問題難點總結一下 常考知識點 關係代數,連線查詢,巢狀查詢,正規化,模式分解,er圖 資料庫設計 關係代數基本運算包括並,差,笛卡爾積,選擇,投影 傳統集合運算 並,差,交,笛卡爾積 專門關係...