02 NumPy数据类型
NumPy 数据类型¶
NumPy 提供了比 Python 提供的数值数据类型更多的选择。以下是一些数值数据类型的列表,具体信息如下表所示。
| 序号 | 类型 | 描述 |
|---|---|---|
| 1 | bool_ | 布尔型数据类型(True 或者 False)以字节形式存储。 |
| 2 | int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64 ) |
| 3 | intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
| 4 | intp | 用于索引的整数类型(类似于 C 的 ssize_t) |
| 5 | int8 | 8位整数,与字节相同。取值范围从 -128 到 127 |
| 6 | int16 | 16位(2字节)整数,与 short 相同。取值范围从 -32768 到 32767 |
| 7 | int32 | 32位(4字节)整数,与 int 相同。取值范围从 -2147483648 到 2147483647 |
| 8 | int64 | 64位(8字节)整数,与 long 相同。取值范围从 -9223372036854775808 到 9223372036854775807 |
| 9 | uint8 | 无符号的 8 位整数,取值范围从 0 到 255 |
| 10 | uint16 | 无符号的 16 位(2 字节)整数,取值范围从 0 到 655 |
| 11 | uint32 | 无符号的 32 位(4 字节)整数,取值范围从 0 到 4294967295 |
| 12 | uint64 | 无符号的 64 位(8 字节)整数,取值范围从 0 到 18446744073709551615 |
| 13 | float_ | 默认的浮点数精度类型,与 C 的 double 相同 |
| 14 | float16 | 半精度浮点数,共 16 位,5 位有效数字,10 位指数,1 位符号 |
| 15 | float32 | 单精度浮点数,共 32 位,8 位有效数字,23 位指数,1 位符号 |
| 16 | float64 | 双精度浮点数,共 64 位,11 位有效数字,52 位指数,1 位符号 |
| 17 | complex_ | 与 complex128 相同,默认的复数精度类型,由两个浮点数组成,表示实部和虚部 |
| 18 | complex64 | 用于表示复数,由两个 float32 组成,实部和虚部各占 32 位 |
| 19 | complex128 | 用于表示复数,由两个 float64 组成,实部和虚部各占 64 位 |
NumPy 数据类型(dtype)¶
NumPy 数组的所有项都是数据类型对象,也称为 NumPy 数据类型(dtype)。数据类型对象实现了与数组相对应的固定内存大小。
我们可以使用以下语法创建 dtype 对象。
import numpy as np
np.dtype(object, align, copy)
构造函数接受以下参数: - object:要转换为数据类型的对象。 - align:可以设置为布尔值。如果为 true,则会添加额外的填充以使其等效于 C 结构。 - copy:创建 dtype 对象的另一个副本。
示例 1:
import numpy as np
d = np.dtype(np.int32)
print(d)
int32
示例 2
import numpy as np
d = np.int32(i4)
print(d)
int32
创建结构化数据类型¶
我们可以创建类似于映射(字典)的数据类型,其中包含值之间的映射关系。例如,它可以包含员工和工资之间的映射,或者学生和年龄之间的映射等。
示例 1
import numpy as np
d = np.dtype([('salary', np.float)])
print(d)
[('salary', '<f8')]
import numpy as np
d = np.dtype([('salary', np.float)])
arr = np.array([(10000.12,), (20000.50,)], dtype=d)
print(arr['salary'])
[(10000.12,) (20000.5 ,)]