NumPy的数据类型
Python 支持的数据类型有整型、浮点型和复数型,但这些类型不足以满足科学计算的需求,因此 NumPy 添加了很多其他的数据类型。在实际应用中,为了提高计算结果的准确度,需要使用不同精度的数据类型,并且不同的数据类型所占用的内存空间也是不同的。在 NumPy 中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数。
1) 使用 dtype 创建自定义数据类型 代码如下:
2) 查看数据类型,可直接查看或使用 numpy.dtype() 函数查看。 如直接查看方法 print('数据类型',pro_type['pro_name']),使用 numpy.dtype() 函数查看方法 print('数据类型',np.dtype(pro_type['pro_name']))。
3) 使用 array() 函数创建数组时,使用 dtype 指定数组的数据类型为 pro_type(自定义数据类型)。 其代码如下:
总结:NumPy 数组一般是同质的,即数组中的所有元素都是相同的数据类型。如果想创建异构数据类型的数组,就需要先自定义异构数据类型,如 pro_tpye 数据类型,它包括一个用字符串表示的产品名称和一个用浮点数表示的产品价格,然后在创建数组的函数中使用 dtype 参数来指定数据类型为 pro_tpye(自定义数据类型)。
NumPy 中支持的数据类型(见表 1 )
数据类型 | 描述 |
---|---|
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() 函数创建数组时,如果没有在参数中指定数据类型,将默认为浮点数类型。