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:如果有不对的地方,欢迎指正~

原文地址:https://www.cnblogs.com/mwcherish/p/11855689.html

时间: 2024-08-30 17:59:38

axis=0 和axis=1的区别的相关文章

Python之NumPy(axis=0 与axis=1)区分

转自:http://blog.csdn.net/wangying19911991/article/details/73928172 https://www.zhihu.com/question/58993137 python中的axis究竟是如何定义的呢?他们究竟代表是DataFrame的行还是列?考虑以下代码: >>>df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col1&quo

Python之NumPy(axis=0/1/2...)的透彻理解

https://blog.csdn.net/sky_kkk/article/details/79725646 numpy中axis取值的说明首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维数越高,则axis可取的值越大,数组n维时,axis=0,1,…,n.为了方便下面的理解,我们这样看待:在numpy中数组都有着[]标记,则axis=0对应着最外层的[],axis=1对应第二外层的[],以此类推,axis=n对应第n外层的[].下面开始从axis=

http1.0与http1.1的区别

http1.0与http1.1的区别 1.http1.1提供身份认证(HTTP1.1提供一个基于口令的基本认证方式,) 2.http1.1提供永久性连接(即1.0使用非持久连接,一个tcp连接只传输一个web对象,服务器完成完请求后立即断开tcp连接,服务器不跟踪每个客户也记录过去的请求,显然,这就造成访问一个包含许多图像文件的网页文件的整个过程包含了多次请求和响应,每次请求和响应需要建立一个单独的连接.客户端每次建立和关闭建立都特别费时,而且会严重影响客户与服务器的性能.HTTP1.1采用持久

Byte,TBytes,array of Byte, array[0..9] of byte的区别

Byte前面已经说是存放bit的单元,是电脑内存的基本单位,byte表示0-255中的256个数字 下面为Byte的用法: var B: Byte; // 表示0-255的数字 begin B := 1; Log(B.ToString()); //1 B := 255; Log(B.ToString()); //255 end; 下面将Char转换成Byte: var C: Char; // char 表示字符任意字符 begin C := '1'; Log(C); // 1 Log(SizeO

Python3.0与Python2.X的区别

正在阅读最新版的<A byte of Python>.发现Python3.0在某些地方还是有些改变的.准备慢慢的体会,与老版本的<A byte of Python>做对比,最后再去查阅官方网站的文档. 1. 如果你下载的是最新版的Python,就会发现所有书中的Hello World例子将不再正确. Old: print "Hello World!" #打印字符串 New: print("Hello World!") 将字符串放到括号中pri

MySQL中0、&#39;0&#39;作为条件时的区别

一.现象: 今天查询时,某字段x为varchar 可能的值为A B C 0 1 2 3 4 想把0 1 2 3 4的所有数据查出,使用的SQL为 select * from table where x in (0,1,2,3,4) 结果发现,会把所有数据都查出 但是,使用 select * from table where x in ('0',1,2,3,4) 查出数据即为正常数据 二.原因: 经查阅,默认情况下,MySQL会尽量进行类型转换 所以,当字符串转为整数时,如A.B.C这种值会转换失

C/C++ 中 NULL、&#39;\0&#39;、&#39;0&#39; 、0、及空格的区别

1.NULL即空指针.在C中,NULL是指向0的指针,由 #define NULL ((void *)0)定义:在C++中,NULL就是0,由 #define NULL 0 定义.可参见 vs2013 的库文件 string.h. 2.'\0' 是空字符常量,表示字符串的结束,ASCII码值为0. 3.'0'是字符0,ASCII码值为48. 4.0是数字0. 5.空格是可显示字符空格,ASCII 码值为32. 备注: 给指针置位为空指针时,应该使用 NULL: 给字符串添加结束标志时,应该使用

液晶拼接屏拼缝0.88mm和3.5mm区别

我们都知道液晶拼接屏拼缝有很多种,宽点的有5.3mm.3.5mm,窄边的有1.8 mm.1.7 mm.0.88mm等,其中LG液晶面板中主要的拼缝是1.8mm.0.88mm和3.5mm三种,分别被应用于49寸和55寸当中,不过49寸1.8mm拼缝拼接屏目前已经停产,下面匠能电子小编为您介绍0.88mm和3.5mm的区别.一.最大区别:拼接效果不同液晶拼接屏拼缝指的是屏与屏拼接后的双边物理边框的宽度,拼缝越小自然显示效果就越好,所以0.88mm和3.5mm拼缝最大的区别就是0.88mm的拼缝黑边更

border:0与border:none区别与联系

联系:前台效果均实现了无边框 区别: 要解释区别,首先得先介绍一下border这个属性. border是一个简写属性.可以设置如下属性 border-width border-style border-color 平时写的时候不用写齐三个属性,写其中一两个也是允许的,比如 border: 1px solid; 为什么这样是可行的呢,因为这样写,浏览器会设置这个缺少属性的默认值.过程等价于(伪代码) border-width: 1px; border-style: solid; border-co