介绍
在本实验中,我们将介绍 Python 的 NumPy 库中的数据类型。我们将详细讲解 dtype 对象的语法及其参数。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到 Notebook 标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟,直到 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时可以向 Labby 提问。实验结束后请提供反馈,我们将及时为你解决问题。
理解 NumPy dtype 对象
在 NumPy 中,数组的所有元素都是数据类型对象,也称为 NumPy dtypes。数据类型对象用于实现与数组对应的固定大小的内存。
它主要为我们提供以下信息:
- 数据的类型(例如,
integer、float或 Pythonobject) - 数据的大小
- 字节顺序(小端序或大端序)
- 如果是结构化类型,它会告诉我们字段的名称、每个字段的数据类型以及每个字段占用的内存块部分。
- 如果数据类型是子数组,它会告诉我们其形状和数据类型。
创建 NumPy dtype 对象
以下是用于创建 dtype 对象的语法:
numpy.dtype(object, align, copy)
以下是上述构造函数参数的描述:
- object: 该参数用于表示要转换为数据类型的对象。
- align: 这是一个可选参数。它用于向字段添加填充,以匹配 C 编译器为类似 C 结构体输出的内容。该参数可以设置为任何布尔值。
- copy: 该参数用于创建
dtype对象的副本,也是一个可选参数。
NumPy 中的数值数据类型
NumPy 库主要提供了比 Python 更广泛的数值数据类型。下表列出了这些数值数据类型:
| 序号 | 数据类型 | 描述 |
|---|---|---|
| 1 | bool_ |
用于表示布尔值(true 或 false),存储为一个字节。 |
| 2 | int_ |
这是整数的默认类型,与 C 语言中的 long 类型相同,主要包含 64 位或 32 位整数。 |
| 3 | intc |
类似于 C 语言中的整数(C int),表示 32 位或 64 位整数。 |
| 4 | intp |
用于表示用于索引的整数。 |
| 5 | int8 |
这是 8 位整数,等同于一个字节。值的范围是 -128 到 127。 |
| 6 | int16 |
这是 2 字节(16 位)整数,范围是 -32768 到 32767。 |
| 7 | int32 |
这是 4 字节(32 位)整数,范围是 -2147483648 到 2147483647。 |
| 8 | int64 |
这是 8 字节(64 位)整数,范围是 -9223372036854775808 到 9223372036854775807。 |
| 9 | uint8 |
这是 1 字节(8 位)无符号整数。 |
| 10 | uint16 |
这是 2 字节(16 位)无符号整数。 |
| 11 | uint32 |
这是 4 字节(32 位)无符号整数。 |
| 12 | uint64 |
这是 8 字节(64 位)无符号整数。 |
| 13 | float_ |
这与 float64 相同。 |
| 14 | float16 |
用于表示半精度浮点数。5 位用于指数,10 位用于尾数,1 位用于符号。 |
| 15 | float32 |
用于表示单精度浮点数。8 位用于指数,23 位用于尾数,1 位用于符号。 |
| 16 | float64 |
用于表示双精度浮点数。11 位用于指数,52 位用于尾数,1 位用于符号。 |
| 17 | complex_ |
这与 complex128 相同。 |
| 18 | complex64 |
用于表示复数,其中实部和虚部分别占用 32 位。 |
| 19 | complex128 |
用于表示复数,其中实部和虚部分别占用 64 位。 |
NumPy 中表示 dtype 的字符
以下是用于表示 NumPy 中 dtype 的字符列表:
i: 整数(integer)b: 布尔值(boolean)u: 无符号整数(unsigned integer)f: 浮点数(float)c: 复数浮点数(complex float)m: 时间差(timedelta)M: 日期时间(datetime)O: 对象(object)S: 字符串(string)U: Unicode 字符串(Unicode string)V: 用于其他类型的内存固定块(void)
示例
示例 1:查找数组的数据类型
我们将尝试查找包含字符串的数组的数据类型:
import numpy as np
ar1 = np.array(['chair', 'book', 'notebook'])
print(ar1.dtype)
输出:
<U8
示例 2:构建 dtype 对象
我们可以使用 numpy.dtype 函数创建一个 dtype 对象。
import numpy as np
dt1 = np.dtype(np.int64)
print (dt1)
输出:
int64
示例 3:使用数值数据类型的简短表示
在以下示例中,我们将使用数值数据类型的简短表示:
import numpy as np
a = np.dtype('i4')
print (a)
输出:
int32
示例 4:创建结构化 dtype 对象
我们将创建一个结构化数据类型并将其应用于 ndarray 对象:
import numpy as np
## 包含键和值的信息
a = np.dtype([('rollno',np.int16)])
print(a)
a = np.array([(101,),(201,),(301,)], dtype=a)
print(a)
输出:
[('rollno', '<i2')]
[(101,) (201,) (301,)]
示例 5:更改数据类型
在以下示例中,我们将通过使用 int 作为参数值将数据类型从 float 更改为 integer:
import numpy as np
ar= np.array([1.1, 2.1, 3.1])
newarr = ar.astype(int)
print(newarr)
print(newarr.dtype)
输出:
[1 2 3]
int64
总结
在本实验中,我们介绍了数组中数据类型的概念。我们了解了如何使用 dtype 对象来指定值的类型、其语法以及 dtype 对象所需的参数。我们还介绍了各种数值数据类型,并通过一些示例帮助你理解。