Python编程基础与科学计算
上QQ阅读APP看书,第一时间看更新

5.1.2 NumPy的数据类型

与Python的数据类型相比,在数值类型方面,NumPy重新定义了一些基本数值数据类型,这些数值数据类型与C语言的数据类型基本一致。NumPy的基本数值数据类型如表5-1所示。

表5-1 NumPy的基本数值数据类型

除了可以直接使用基本数值类型外,为方便记忆,可以用NumPy定义的数值数据类型的别名,如表5-2所示。

表5-2 NumPy数值数据类型的别名

对于整数和浮点数类型,可以用iinfo(dtype)和finfo(dtype)分别查询整数和浮点数的信息,整数和浮点数可以查询的内容如下面的代码中的注释说明。

在用array()方法创建列表时,可以使用参数dtype指定数据的类型,用数组的itemsize属性可以获取数据元素所占据的字节数量,用dtype属性可以获取数组的数据类型,例如下面的代码。

NumPy除了可以直接使用基本的数据类型外,还可以用基本数据类型的组合定义更复杂的类型,例如结构数组。NumPy中的数据类型都是dtype的实例对象,用dtype定义数据类型的格式如下所示:

     dtype(obj,align=False,copy=False)

其中,obj是对数据类型的定义;align如果是True,则用使用类似C语言的结构体填充字段;copy=True时则复制dtype对象,copy=False时则对内置数据类型对象进行引用。

对于基本数据类型,还可以用字符代码来代替,基本数据类型与字符代码之间的对应关系如表5-3所示。需要说明的是,str类型的字符代码是'S',可以在'S'后面添加数字,表示字符串长度,比如'S3'表示长度为3的字符串,不写则为最大长度。

表5-3 基本数据类型与字符代码

用dtype()方法可以定义结构数组,结构数组的元素需要用“(字段名,类型)”形式来定义,例如下面的代码。

在类型代码中,可以加入表示字节序(type order)的符号,字节序分为大端序(big(-?)endian)和小端序(little-endian)。大端序是高位在前,低位在后;而小短序则是高位在后,低位在前。例如要记录123这个常数,在内存中用“123”方式记录表示大端序(需要转换成二进制),而用“321”方式则是小端序。在类型中用“>”表示大端序,用“<”表示小端序,用“=”表示由系统决定采用大端序还是小端序,用“|”表示忽略字节序。