【numpy】ndarray 多維數組的維數和軸號分析總結

numpy中ndarray定義了多維數組,但是維數和軸號(axis)特別容易混淆,因此作了以下分析總結。

維數的判斷(2種方法)

1、數左方括號“ [ ”的個數,如下圖就是4維數組(有四個左括號,是4維)

2、查看shape屬性的輸出元組元素個數(有四個元素,也是4維)

軸號的判斷(從左向右依次是0,1,2...)

軸號可以數左括號“[”的順序得到,從左到右依次是0,1,2... ,下面以sum函數進行驗證。

1、sum(axis=0)

沿着0號軸進行求和,即將0號軸壓縮爲一個值,等效去除0號軸,最終結果由(2,3,2,4)變爲(3,2,4)

沿0號軸範圍內有2個shape爲(3,2,4)的元素,如下所示。

進行sum(axis=0)操作,即將兩個元素疊起來求和,變成了1個(3,2,4)的元素,此時的1維的括號“[”失去意義,被去除,最後結果是(3,2,4)三個軸

 

2、sum(axis=1)

沿1號軸進行求和,1號軸被壓縮去除,最後結果是(2,2,4)結構

1號軸內結構爲3個(2,4)結構的元素,如下圖所示

將3個元素按位求和的1個(2,4)結構,而0號軸包含2個1號軸組織的結構,首先得到的結果(2,1,2,4),1失去意義被去除,最後結果是(2,2,4)

3、sum(axis=2)

沿2號軸求和,2號軸被壓縮去除,最後結果(2,3,4)結構

2號軸包含2個( 4 )結構,如下圖所示

將2個元素求和得1個(4)結構,首先得到(2,3,1,4)結構,去除值爲1的軸(失去意義),最後的(2,3,4)結構

4、sum(axis=3)

沿3號軸求和,3號軸被壓縮去除,最後結果(2,3,2)結構

3號軸包含4個 1 元結構,如下圖所示

將4個元素求和得1個1元結構,間接得到(2,3,2,1)結構,去除值爲1的軸(失去意義),最後的(2,3,2)結構

更多驗證

以下爲多加了2組括號(總共6個),結果變成了6維(1,1,2,3,2,4)

案例代碼

import numpy as np

a = np.array([[[[ 0,  1,  2, 3],
                [ 4,  5,  6, 7]],
               [[ 8, 9, 10, 11],
                [12, 13, 14, 16]],
               [[17, 18, 19, 20],
                [21, 22, 23, 25]]],
              [[[ 0,  1,  2, 3],
                [ 4,  5,  6, 7]],
               [[ 8, 9, 10, 11],
                [12, 13, 14, 16]],
               [[17, 18, 19, 20],
                [21, 22, 23, 25]]]])
print(a)
print(a.shape)

a0 = a.sum(axis=0)
print(a0)
print(a0.shape)


a1 = a.sum(axis=1)
print(a1)
print(a1.shape)


a2 = a.sum(axis=2)
print(a2)
print(a2.shape)

a3 = a.sum(axis=3)
print(a3)
print(a3.shape)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章