1. 程式人生 > >numpy裡面的一些難理解的概念

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] ]