Numpy 中的 axis

Numpy 中的 axis 對初學者而言是一個很是容易引發困擾的概念,本文但願經過圖文並茂的方式,讓你們能對 axis 有一個直觀的認識。html

數形結合百般好

數缺形時少直觀,形少數時難入微。
數形結合百般好,隔離分家萬事休。
—— 華羅庚python

axis 自己就是 的意思,它實際上表明瞭要在哪一個軸上進行求和,因此使用 sum 函數時,必定要有一個空間上的概念,這樣會很是容易理解計算的結果。數組

二維

因此當咱們說 [[0, 4, 2], [-2, 5, 3]],咱們說的實際上是:函數

二維數組對應的就是一個二維表格,它一共有兩個軸(axis),axis 0 對應行,axis 1 對應列。spa

當指定 axis 0 進行求和時,作的是這樣的運算:3d

也就是順着 axis 0 軸求和,最後獲得一個一維數組:code

>>> np.sum([[0, 4, 2], [-2, 5, 3]], axis=0)
array([-2,  9,  5])
複製代碼

一樣地,當指定 axis 1 時,是這樣的:cdn

即:htm

>>> np.sum([[0, 4, 2], [-2, 5, 3]], axis=1)
array([6, 6])
複製代碼

三維

上升到三維空間又是怎樣的呢?實際上道理仍是同樣的,咱們建立一個三維數組:blog

>>> array_3d = [
...     [
...             [1, 2],
...             [3, 4]
...     ],
...     [
...             [5, 6],
...             [7, 8]
...     ],
...     [
...             [9, 10],
...             [11, 12]
...     ]
... ]
複製代碼

而後腦海裏立刻就有一個三維的空間了!

那對 axis 0 求和,其實就是順着 axis 0 的方向求和,最後得出的是一個二維數組:

即:

>>> np.sum(array_3d, axis=0)
array([[15, 18],
       [21, 24]])
複製代碼

axis 1axis 2 也是同樣的,這裏以 axis 2 舉例,你們能夠嘗試本身畫 axis 1 的:

>>> np.sum(array_3d, axis=2)
array([[ 3,  7],
       [11, 15],
       [19, 23]])
複製代碼

四維咋辦

四維咋辦,四維還真很差畫,不過本文的目的是可以直觀理解計算的結果,講道理前面這些圖應該足夠理解求和了,因此我也不畫了,哈哈哈

軸的肯定

固然,上面全部運算的前提,都是咱們正確肯定好了座標軸的方向。關鍵問題在於,如何知道哪一個是 axis 0、哪一個是 axis 1

實際上,軸的肯定能夠根據嵌套關係來肯定,軸的順序就是括號的從外到內:

不過用這種方式思考,就少了對形的理解,會稍微難以理解,能夠參考 Python · numpy · axis

參考

相關文章
相關標籤/搜索