本教程适合于numpy基础入门,更多详尽内容请阅读官网http://www.numpy.org/,此篇为numpy基础学习教程系列之数据类型篇,倾向于实践用法,后续还会推出一系列numpy其它方面的教程,欢迎广大圈友一起交流学习,并指出其中的错误。
注意:以下np为import numpy as np中的np标识符
numpy中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数。
注意:每一种数据类型,都有对应的转换函数。
1. 数据类型对象
数据类型对象是numpy.dtype类的实例,数据类型对象可以给出单个元素在内存中所占用的字节数
>>> a = np.array([1,2,3],dtype='int64')
>>> a.dtype.itemsize
8
可以将两个字符作为参数传给数据类型的构造函数,第一个字符表示数据类型,第二个字符表示该类型在内存中占用的字节数(2、4、8分别代表精度为16、32、64的浮点数)
>>> np.dtype('f8')
dtype('float64')
dtype类有很多属性
>>> t = np.dtype("Float64")
>>> t.char
'd'
>>> t.str
'<f8'
注意:str属性可以给出数据类型的字符串表示,该字符串的首个字符表示字节序,后面如果还有字符的话,将是一个字符编码,接着一个数字表示每个数组元素存储所需的字节数。
字节序是指位长为32或64的字(word)存储的顺序,包括大端序和小端序。大端序是将最高位字节存储在最低的内存地址处,用>表示;与之相反,小端序是将最低位字节存储在最低的内存地址处,用<表
2. 自定义数据类型
自定义数据类型是一种异构数据类型,可以当做用来记录电子表格或数据库记录的数据结构
>>> t =np.dtype([('name',str,40),('numitems','int32'),('price','float32')])
>>> t
dtype([('name', 'S40'), ('numitems', '<i4'),('price', '<f4')])
查看某一字段的数据类型
>>> t['name']
dtype('S40')
在用array创建数组时,如果没有在参数中指定数据类型,则默认时浮点数类型。创建自定义数据类型数组时,必须指定数据类型,否则将触发TypeError
>>> items =np.array([("Meaning of lifeDVD",42,3.14),("Butter",13,2.72)],dtype=t)
>>> items[1]
('Butter', 13, 2.7200000286102295)