1. 程式人生 > 其它 >What does axis/axes mean in Numpy

What does axis/axes mean in Numpy

在網上找到篇英文文章解釋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]])

關於1維陣列的axis

1維陣列只有一個axis

關於3維陣列的axis