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 1
、axis 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。