求numpy及pandas的axis轴的理解,你们有谁知道吗?我彻底晕了
2条回答 默认 最新
关注轴(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])评论 打赏 举报解决 1无用