【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轴,沿着x轴方向前进了2个单位。3位于y轴,沿着y轴方向前进了3个单位。
NumPy axes的作用和笛卡尔坐标类似,也是沿着什么方向前进。比如当axis分别等于0和1时,分别是沿着行和列的方向前进
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]])