numpy 支持的数据类型比 Python 内置的类型要多很多基本上可以和 C 语言的数据类型对应上其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。名称描述bool_布尔型数据类型True 或者 Falseint_默认的整数类型类似于 C 语言中的 longint32 或 int64intc与 C 的 int 类型一样一般是 int32 或 int 64intp用于索引的整数类型类似于 C 的 ssize_t一般情况下仍然是 int32 或 int64int8字节-128 to 127int16整数-32768 to 32767int32整数-2147483648 to 2147483647int64整数-9223372036854775808 to 9223372036854775807uint8无符号整数0 to 255uint16无符号整数0 to 65535uint32无符号整数0 to 4294967295uint64无符号整数0 to 18446744073709551615float_float64 类型的简写float16半精度浮点数包括1 个符号位5 个指数位10 个尾数位float32单精度浮点数包括1 个符号位8 个指数位23 个尾数位float64双精度浮点数包括1 个符号位11 个指数位52 个尾数位complex_complex128 类型的简写即 128 位复数complex64复数表示双 32 位浮点数实数部分和虚数部分complex128复数表示双 64 位浮点数实数部分和虚数部分numpy 的数值类型实际上是 dtype 对象的实例并对应唯一的字符包括 np.bool_np.int32np.float32等等。数据类型对象 (dtype)数据类型对象numpy.dtype 类的实例用来描述与数组对应的内存区域是如何使用它描述了数据的以下几个方面数据的类型整数浮点数或者 Python 对象数据的大小例如 整数使用多少个字节存储数据的字节顺序小端法或大端法在结构化类型的情况下字段的名称、每个字段的数据类型和每个字段所取的内存块的部分如果数据类型是子数组那么它的形状和数据类型是什么。字节顺序是通过对数据类型预先设定 或 来决定的。 意味着小端法(最小值存储在最小的地址即低位组放在最前面)。 意味着大端法(最重要的字节存储在最小的地址即高位组放在最前面)。dtype 对象是使用以下语法构造的numpy.dtype(object, align, copy)object - 要转换为的数据类型对象align - 如果为 true填充字段使其类似 C 的结构体。copy - 复制 dtype 对象 如果为 false则是对内置数据类型对象的引用实例接下来我们可以通过实例来理解。实例 1import numpy as np # 使用标量类型 dt np.dtype(np.int32) print(dt)输出结果为int32实例 2import numpy as np # int8, int16, int32, int64 四种数据类型可以使用字符串 i1, i2,i4,i8 代替 dt np.dtype(i4) print(dt)输出结果为int32实例 3import numpy as np # 字节顺序标注 dt np.dtype(i4) print(dt)输出结果为int32下面实例展示结构化数据类型的使用类型字段和对应的实际类型将被创建。实例 4# 首先创建结构化数据类型 import numpy as np dt np.dtype([(age,np.int8)]) print(dt)输出结果为[(age, i1)]实例 5# 将数据类型应用于 ndarray 对象 import numpy as np dt np.dtype([(age,np.int8)]) a np.array([(10,),(20,),(30,)], dtype dt) print(a)输出结果为[(10,) (20,) (30,)]实例 6# 类型字段名可以用于存取实际的 age 列 import numpy as np dt np.dtype([(age,np.int8)]) a np.array([(10,),(20,),(30,)], dtype dt) print(a[age])输出结果为[10 20 30]下面的示例定义一个结构化数据类型 student包含字符串字段 name整数字段 age及浮点字段 marks并将这个 dtype 应用到 ndarray 对象。实例 7import numpy as np student np.dtype([(name,S20), (age, i1), (marks, f4)]) print(student)输出结果为[(name, S20), (age, i1), (marks, f4)]实例 8import numpy as np student np.dtype([(name,S20), (age, i1), (marks, f4)]) a np.array([(abc, 21, 50),(xyz, 18, 75)], dtype student) print(a)输出结果为[(babc, 21, 50.) (bxyz, 18, 75.)]每个内建类型都有一个唯一定义它的字符代码如下字符对应类型b布尔型i(有符号) 整型u无符号整型 integerf浮点型c复数浮点型mtimedelta时间间隔Mdatetime日期时间O(Python) 对象S, a(byte-)字符串UUnicodeV原始数据 (void)