python numpy object数据类型_numpy中的数据类型对象有哪些

Numpy数据类型

numpy是一个python扩展包,它可以为我们提供更精确的科学技术,更强大的数学能力。为此,numpy定义了比python更丰富的数据类型来达成目的。

数据类型

以上就是一系列Numpy中提供的数据类型。需要理解的是,Numpy中的数据类型,和python本身的数据类型是不同的。Numpy中的数据类型,实质是数据类型对象dtype的实例。

Numpy中的Ndarray对象可以帮助我们构建N维数组对象。我们知道,对于数组来说,最大特点是,对于给定长度的数组,其在内存中所占用的空间大小是预先分配的,并且,每个元素所占用的空间大小是相当的。

那么,Ndarray怎么计算每个元素所占用的空间大小呢?就是根据dtype。换句话说,dtype定义中,应该包含类型的名字,并且,能够明确该类型实例占用的内存空间大小。

另外,dtype中还表明了数据的字节顺序。什么是字节顺序呢?我们知道,对于机器来说,正常的人类语言是无法直接被识别或存储的。需要转换成二进制01代码。这种二进制01代码称为机器语言,也叫字节码。对于一个特定的正常语言,转换成一系列01代码后,可以正向存放,也可以逆向存放。低位放在最前,称之为小端法,高位放在最前,则称之为大端法。

在numpy,core包的multiarray_umath.py模块中,可以找到dtype类的定义。有兴趣的同学可以尝试阅读一下其源码。读源码其实是一种有效的学习编程的方式。

dtype类定义

Numpy数据类型的简单案例

案例一:numpy.bool_和bool有区别

numpy的bool_和bool

上面的demo不会报错,这容易让人误以为,bool可能是numpy中bool_的简写,事实上,二者是两个不同的对象。bool_是由numpy定义的,而bool则是由python标准库定义的。

额外补充一点关于python数据类型的内容。我们知道,python中,有一系列基本数据类型,如数字,字符串,列表,元组,字典,集合等。而又与之对应,创建了一系列对象,帮助使用,如int,float,complex,str,list,tuple,dict,set等。bool也是一个,只不过,查看源码你会发现,int,float等,都是以object为父类的,而bool,则是以int为父类的。这正是python一切皆对象的表现之一。

案例二:使用字符串码

字符串码可以帮助建立一个dtype对象实例,还可以同时指定其字节码顺序。字符串码一般比原数据类型的标识符要短。

比如说,int类型的字符串码为i,可以通过以下方式创建:

int类型的字符串码

我们发现,通过字符串码i,创建了一个int32,你也可以通过i3来创建int32,通过i1创建int8,通过i2创建int16,通过i4创建int64。规律就是i其实是int的首字母,后面的数字其实是字节的长度,8位是1个字节,16位是两个字节,32位是三个字节……

大部分的情况下是可以通过这种规律来帮助记忆的。事实上,用多了,自然也就记住了。常用列表如下:

字符串码

通过在字符串码前加大于或小于号来指定字节排序,小于代表小端法,大于代表大端法,如下:

指定排序

其实在大部分场景下,我们不需要关注字节的排序,这时候,直接通过np的对象来创建就好,这样也不用去记忆或查询字符串码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值