Python 数据分析里面轴的问题

求numpy及pandas的axis轴的理解,你们有谁知道吗?我彻底晕了

轴(axis)是多维数组(ndarray)的核心概念,很多numpy函数也都和轴相关。简单来说,我们可以把数组的轴,和笛卡尔坐标系的轴对应一下。一维数组,类比于一维空间,只有一个轴,那就是0轴。二维数组,类比于二维平面,有两个轴,我们习惯表示成行、列,那么行的方向就是0轴,列的方向就是1轴。三维数组,类比于三维空间,有三个轴,我们习惯表示成层、行、列,那么层的方向就是0轴,行的方向就是1轴,列的方向就是2轴。

img

下面的代码演示了求和函数sum的axis参数的用法,有助于理解多维数组的轴概念。

>>> import numpy as np
>>> a = np.arange(18).reshape((3,2,3)) # 生成323列的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轴求和,也就是各层对应元素求和,结果为23列的2维数组
array([[18, 21, 24],
       [27, 30, 33]])
>>> a.sum(axis=1) # 沿1轴求和,也就是各行对应元素求和,结果为33列的2维数组
array([[ 3,  5,  7],
       [15, 17, 19],
       [27, 29, 31]])
>>> a.sum(axis=2) # 沿2轴求和,也就是各列对应元素求和,结果为32行的2维数组
array([[ 3, 12],
       [21, 30],
       [39, 48]])
>>> np.sum(a.sum(axis=1), axis=1) # 分层求和,结果为1维数组,长度和原数组层数对应
array([15, 51, 87])

看看这个解释比较详细。