首页 > NumPy 阅读数:43

NumPy的数据类型

Python 支持的数据类型有整型、浮点型和复数型,但这些类型不足以满足科学计算的需求,因此 NumPy 添加了很多其他的数据类型。在实际应用中,为了提高计算结果的准确度,需要使用不同精度的数据类型,并且不同的数据类型所占用的内存空间也是不同的。在 NumPy 中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数。

NumPy 中支持的数据类型(见表 1 )

表 1:NumPy 的基本数据类型及描述
数据类型 描述
bool 用一位存储的布尔类型(值为 True 或 False)
inti 由所在平台决定其精度的整数(一般为 int32 或 int64)
int8 整数,范围为 -128~127
int16 整数,范围为 -32768~32767
int32 整数,范围为 -231~231-1
int64 整数,范围为 -263~263-1
uint8 无符号整数,范围为 0~255
uint16 无符号整数,范围为 0~65535
uint32 无符号整数,范围为 0~232-1
uint64 无符号整数,范圉为0~264-1
float16 半精度浮点数(16位),其中用 1 位表示正负号,5 位表示指数,10 位表示尾数
float32 单精度浮点数(32位),其中用 1 位表示正负号,8 位表示指数,23 位表示尾数
float64 或 float 双精度浮点数(64位),其中用 1 位表示正负号,11 位表示指数,52 位表示尾数
complex64 复数,分别用两个 32 位浮点数表示实部和虚部
complex128 或 complex 复数,分别用两个 64 位浮点数表示实部和虚部

自定义数据类型

自定义数据类型是一种异构数据类型,可以将它看作是电子表格的标题行。例如,创建一个存储产品价格信息的数据类型。其中,产品名称是用字符串表示的长度为 50 个字符,产品价格是用 32 位单精度浮点数表示。那么,使用自定义数据类型来创建数组的方法如下。

1) 使用 dtype 创建自定义数据类型 代码如下:
# -*- coding: UTF-8 -*-
import numpy as np
pro_type = np.dtype([('pro_name',np.str,50),('pro_price',np.float32
print('数据类型:',pro_type)

2) 查看数据类型,可直接查看或使用 numpy.dtype() 函数查看。 如直接查看方法 print('数据类型',pro_type['pro_name']),使用 numpy.dtype() 函数查看方法 print('数据类型',np.dtype(pro_type['pro_name']))。

3) 使用 array() 函数创建数组时,使用 dtype 指定数组的数据类型为 pro_type(自定义数据类型)。 其代码如下:
# -*- coding: UTF-8 -*-
import numpy as np
pro_arr = np.array([('电视机',3400),('空调',2600)],dtype=pro_type)
print('自定义数据类型的数组:',pro_arr)

总结:NumPy 数组一般是同质的,即数组中的所有元素都是相同的数据类型。如果想创建异构数据类型的数组,就需要先自定义异构数据类型,如 pro_tpye 数据类型,它包括一个用字符串表示的产品名称和一个用浮点数表示的产品价格,然后在创建数组的函数中使用 dtype 参数来指定数据类型为 pro_tpye(自定义数据类型)。

注意:在使用 array() 函数创建数组时,如果没有在参数中指定数据类型,将默认为浮点数类型。