求numpy及pandas的axis轴的理解,你们有谁知道吗?我彻底晕了
轴(axis)是多维数组(ndarray)的核心概念,很多numpy函数也都和轴相关。简单来说,我们可以把数组的轴,和笛卡尔坐标系的轴对应一下。一维数组,类比于一维空间,只有一个轴,那就是0轴。二维数组,类比于二维平面,有两个轴,我们习惯表示成行、列,那么行的方向就是0轴,列的方向就是1轴。三维数组,类比于三维空间,有三个轴,我们习惯表示成层、行、列,那么层的方向就是0轴,行的方向就是1轴,列的方向就是2轴。
下面的代码演示了求和函数sum的axis参数的用法,有助于理解多维数组的轴概念。
>>> import numpy as np
>>> a = np.arange(18).reshape((3,2,3)) # 生成3层2行3列的3维数组
>>> a
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17]]])
>>> a.sum() # 数组所有元素求和
153
>>> a.sum(axis=0) # 沿0轴求和,也就是各层对应元素求和,结果为2行3列的2维数组
array([[18, 21, 24],
[27, 30, 33]])
>>> a.sum(axis=1) # 沿1轴求和,也就是各行对应元素求和,结果为3层3列的2维数组
array([[ 3, 5, 7],
[15, 17, 19],
[27, 29, 31]])
>>> a.sum(axis=2) # 沿2轴求和,也就是各列对应元素求和,结果为3层2行的2维数组
array([[ 3, 12],
[21, 30],
[39, 48]])
>>> np.sum(a.sum(axis=1), axis=1) # 分层求和,结果为1维数组,长度和原数组层数对应
array([15, 51, 87])