What does axis/axes mean in Numpy
阿新 • • 發佈:2021-06-18
在網上找到篇英文文章解釋NumPy axes的,非常好理解,感興趣的同學可以直接點選右側的連結觀看——> Numpy axes explained by Joshua Ebner。
以下是我看完該文後的個人摘錄:
NumPy axes就像是座標系中的軸
先看一幅圖——笛卡爾座標系
一個二維的笛卡爾座標系有兩個軸——x軸和y軸,在笛卡爾空間中,這兩個軸表示的就是直角的方向。如x軸,是指向右邊的直角方向,而y軸則是指向上邊的直角方向。
以座標(2, 3)舉例,2位於x軸方向,距離原點2個單元。3位於y軸方向,距離原點3個單位。
NumPy axes是沿著行和列前進的方向
Axis 0是沿著行前進的方向
Axis 1是沿著列前進的方向
NumPy陣列的axes起始值是0
Python列表的元素的索引值是從0開始計數的,NumPy陣列的axes值和Python列表的索引值一樣,也是從0開始計數的。
舉例說明如何使用NumPy的axes
以函式sum舉例
首先,匯入numpy,建立一個shape為(2, 3)的陣列,初始值設為0到6的序列.
import numpy as np
np_array_2d = np.arange(0, 6).reshape([2,3])
print(np_array_2d)
#output:
#[[0 1 2]
# [3 4 5]]
然後使用numpy的sum函式,axis設為0,沿著行方向將元素進行相加
np.sum(np_array_2d, axis = 0)
#output:
#array([3, 5, 7])
利用同樣的資料np_array_2d,使用sum函式,將axis設為1,沿著列方向將元素進行相加
np.sum(np_array_2d, axis = 1)
#output:
#array([3, 12])
以函式concatenate舉例
建立兩個相同shape的numpy陣列,值分別填充為全1和全9
np_array_1s = np.array([[1,1,1],[1,1,1]]) np_array_9s = np.array([[9,9,9],[9,9,9]]) print(np_array_1s) #output: #array([[1, 1, 1], # [1, 1, 1]]) print(np_array_9s) #output: #array([[9, 9, 9], # [9, 9, 9]])
使用concatenate函式將這兩個陣列相連,axis設為0,沿著行方向進行拼接
np.concatenate([np_array_1s, np_array_9s], axis = 0)
#output:
#array([[1, 1, 1],
# [1, 1, 1],
# [9, 9, 9],
# [9, 9, 9]])
和上面一樣,同樣的資料和操作,將axis改為1,沿著列方向進行拼接
np.concatenate([np_array_1s, np_array_9s], axis = 1)
#output:
#array([[1, 1, 1, 9, 9, 9],
# [1, 1, 1, 9, 9, 9]])