numpy裡面的一些難理解的概念
1. 維度、秩、軸:
其實這三個都是一個玩意兒。首先要明確這些概念被提出來是為了幹嘛?
好吧。我自己認為——就是為了說明巢狀的陣列結構(有點像是矩陣的下標一樣可以清晰的看出來行列個數)
舉個例子:
a = [
[ [2 , 5 , 8]
[3 , 9 ,7]
[10, 15,20]],
[[9 , 6, 5]
[4 ,3 , 2]
[1, 1 , 0] ]
]
這個a內就是一個3維陣列。 判定方法很簡單 隨便找個元素想要把它取出來需要幾步索引就是咯
例如 想要取出來20。 那麼就是 a[0][2][2] 你看,需要三步“[ ]”才能取出來,那麼“[ ]”的個數就是該陣列的維度。那麼該陣列的秩也就為3. 但是,軸(axis) 的計數是從0開始的。因此,對於該陣列而言,axis=0 (一維)就是對應於 a[ ] 這一層。axis=1就對應於 a[ ][ ]這一層面。
2. 維度的長
So,既然把結構解決清楚了那就再看一個概念: 維度的長
對於多維陣列a而言, 第一維 a[ ] “[ ]”能填 0 和 1 兩個數,那麼該維度的長就是2
(其實就是這個維度下有幾個元素而已)
第二維 a[ ][ ] 第二個“[ ]”能填 0 、1、2 三個數,那麼該維度的長就是3
第二維 a[ ][ ][ ] 第三個“[ ]”能填 0 、1、2 三個數,那麼該維度的長就是3
enmmmmmmm,暫時就這樣解釋吧。不嚴謹,但是作為判斷的一種思路可以考慮。
來進一步加深一下理解:
np.max(a, axis = 1) 含義就是 對多維陣列 a 的第二維度(a[ ][ ])中找出最大值。 結果返回[ [10,15,20], [9, 6, 5] ]
np.max(a, axis = 2) 結果返回 [ [8, 9, 20], [9, 4, 1] ]
np.max(a, axis = -1) 等價於 np.max(a, axis = 2)
np.max(a, axis=0) 結果返回[ [9, 6, 8],[4, 9, 7],[10, 15, 20] ]