axis=0 和axis=1的区别

Posted mwcherish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了axis=0 和axis=1的区别相关的知识,希望对你有一定的参考价值。

1、先以二维数组为例:

此数组为二维数组,shape=[4,3],第一个维度为4,第二个维度为3

技术图片

在numpy中若没有指定axis,默认对所有的数据相加

技术图片

axis=0表示第一个维度,axis=1表示第二个维度,以此类推(是几维数组就有几个维度)

若指定了axis=0,则沿着第一个维度的方向进行计算

此例中,第一个维度的数据为[1,2,3] [4,5,6] [1,3,5] [2,4,6] 即data[0],data[1],data[2],data[3]

将这个维度下的数据在这个维度变动的方向上计算/比较

技术图片

技术图片

若指定了axis=1,则沿着第二个维度的方向进行计算

此例中,第二个维度的数据为1 2 3, 4 5 6 ,1 3 5 ,2 4 6 即data[0][0] data[0][1] data[0][2], data[1][0] ...data[3][2] ,即具体到每一个值( 最里面[ ]里面的数据)

将这个维度的数据沿着这个维度变动的方向进行计算

技术图片

技术图片

2、添加/删除一行或一列(其实axis=0或者axis=1和上面的概念一样,都是在指定维度变化的方向上进行添加的数据)

技术图片

在pandas中,如果没有指定axis,则默认按axis=0来计算

技术图片

若指定了axis=0,则按照第一个维度的变化方向来计算

技术图片

技术图片

若指定了axis=1,则按照第二个维度的变化方向来计算

技术图片

技术图片

删除数据,若指定了axis=0,则沿着第一个维度变化的方向,删除所指定的索引的数据(这里我并不认为是axis=0是指删除行数据,我觉得是删除了这个维度变化方向上的索引的数据,同理axis=1也是如此)

技术图片

这里是沿着第一个维度变化的方向,删除索引为2的数据

技术图片

删除数据,若指定了axis=1,则沿着第二个维度变化的方向,删除所指定索引的数据

技术图片

这里沿着第二个维度变化的反向,删除索引为2 的数据

技术图片

所以说:无论是再numpy中还是pandas中对axis的理解其实是一样的

3、扩充到多维数组:

此数组为3维数组,shape=[2,2,3]

技术图片

在numpy中若没有指定axis,默认对所有的数据相加

技术图片

若指定axis=0,则沿着第一维变化的方向进行计算

此例中,第一维的数据为(三维数组的第一个维度):[[0,2,3],[0,3,3]] [[1,1,3],[1,1,1]] 即data[0],data[1]

将这个维度的数据沿着这个维度变动的方向进行计算,

相当于如下

技术图片

技术图片

其实这里也可以验证自己计算所得是否正确,例如数组的shape=[2,2,3] ,则axis=0,计算得到的数组的维度为[2,3](就是去掉指定维度后的数组的shape),若axis=1,计算得到的数组的维度为[2,3],若axis=2,计算得到的数组的维度为[2,2]

若指定了axis=1,则沿着第二个维度变化的方向进行计算,

此例中第二个维度是的数据为(二维数组的第一个维度)[0,2,3] [0,3,3] [1,3,6] [1,4,4] 即data[0][0] data[0][1] data[1][0] data[1][1]

将这个维度的数据沿着这个维度变动的方向进行计算,

技术图片

技术图片

若axis=2,则沿着第三个维度变化的方向进行计算

此例中第三个维度的数据为 0 2 3 ,0 3 3 ,1 1 3 ,1 1 1 即data[0][0][0] data[0][0][1] data[0][0][2],data[0][1][0] data[0][1][1] data[0][1][2] ……data[1][[1][2](具体的值)

将这个维度的数据沿着这个维度变化的方向进行计算

技术图片

技术图片

4、四维数组验证

技术图片

技术图片

若指定axis=0 ,则沿着第一个维度变化的方向进行计算

此例中第一维度的数据为(四维数组的第一个维度)data[0] data[1] data[2] data[3]

将这个维度的数据沿着这个维度变动的方向进行计算,相当于data[0] +data[1]+data[2]+data[3]

技术图片

若指定axis=1 ,,则沿着第二个维度变化的方向进行计算,,数据为(三维数组的第一个维度),计算相当于data[0][0] +data[1][0] +data[2][0] +data[3][0]

技术图片

若指定axis=2,则沿着第三个维度变化的方向进行计算,数据为(二维数组的第一个维度)

技术图片

技术图片

若指定axis=3,则沿着第四个维度变化的方向进行计算,数据为具体的数

技术图片

技术图片

5、补充:

np.sort()排序

技术图片

技术图片

np.prod()乘积(product)

技术图片

 

 

ps:如果有不对的地方,欢迎指正~

以上是关于axis=0 和axis=1的区别的主要内容,如果未能解决你的问题,请参考以下文章

axis=0 axis=1 axis=2 在numpy中的区别

axis=0 axis=1 axis=2 在numpy中的区别

axis=0 axis=1 axis=2 在numpy中的区别

python-dataframe的合并(append, merge, concat, join)

Axis2 webservice 和 CXF web service 的区别

axis2与cxf区别