在使用python做数据处理和分析的时候,我们经常需要针对行或者列做运算,比如求和、均值、最大、最小值等。怎么确定是针对那个方向上的数据做运算呢?主要是通过参数axis决定,比如x.sum(axis=2)?
axis参数的值是怎么确定的呢?
官方解释:
axis指的就是轴,轴用来为超过一维数组定义的属性,二维数据拥有两个轴:第0轴沿着行的方向垂直向下,第1轴沿着列的方向水平延申。根据官方的说法,1表示横轴,方向从左到右;0表示纵轴,方向从上到下。当axis=1时,数组的变化是横向的,体现出列的增加或者减少。反之,当axis=0时,数组的变化是纵向的,体现出行的增加或减少。
上面的官方解释是针对二维数据,如果是三维数据,点解?。通过一些资料收集和学习,总算从本质上搞懂了axis这个参数的意思;
axis的取值一般是0,1,2…,其中0表示最高维,1表示次高维度,2是次次高维度,依次推算下去。
对于一个二维的数据来说,数组a中每一个元素相当于一维数组,每个一维数组中才是单个元素,因此单我们用a[0][0]选取元素时,a[0]表示的是先取到的是里面的一维数组,所以它就是高维,接下来a[0][0]取到的是最内层一维数组中的每一个元素,因此,第二个[0]就是我们说的“低维”;
当axis=0,高维变化(行序号变),低维不变(列序号不变),a[0][0],a[1][0]之间的运算表示第一个值,a[0][1],a[1][1]之间的运算表示第二个值;
当axis=1,高维不变(行序号不变),低维变(列序号变),a[0][0],a[0][1]之间的运算表示第一个值,a[1][0],a[1][1]之间的运算表示第二个值;
对于三维数组来说,a[0][0][0]中a[0]表示的是最高维度,a[0][0]表示的第二维度,a[0][0][0]表示最低维度的数据。
在进行函数运算的时候,当axis=0,表示最高维度的值变化,其他低维度不变的数据进行运算,比如a[0][0][0],a[1][0][0];a[0][1][0],a[1][1][0];a[0][0][1],a[1][0][1];a[0][1][1],a[1][1][1]
当axis=1时,表示最二高维度的值变化,其他低维度不变的数据进行运算,a[0][0][0],a[0][1][0];a[1][0][0],a[1][1][0];a[0][0][1],a[0][1][1];a[1][0][1],a[1][1][1];
当axis=2时,表示最低维度的值变化,其他低维度不变的数据进行运算,a[0][0][0],a[0][0][1];a[1][0][0],a[1][0][1];a[0][1][0],a[0][1][1];a[1][1][0],a[1][1][1];
举栗说明:
##二维数组
b=np.array([[4,5,6],[7,8,9]])
display(b)
##三维数组
x=np.arange(8).reshape(2,2,2)
display(x)
display(x.sum(axis=0))
display(x.sum(axis=1))
display(x.sum(axis=2))
结果展示:
参考链接来源:https://mp.weixin.qq.com/s/-MgGal7o3LqsfTM9l3S46g