理解 NumPy 数据类型

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验将提供一份循序渐进的指南,帮助你了解 NumPy 中可用的不同数据类型,以及如何修改数组的数据类型。NumPy 支持多种数值类型,包括布尔值、整数、浮点数和复数。了解这些数据类型对于使用 NumPy 执行各种数值计算和数据分析任务非常重要。

注意:你可以在 04-data-types.ipynb 中编写代码。步骤中省略了一些打印操作,你可以根据需要打印输出。

理解数据类型

NumPy 支持多种与 C 编程语言紧密相关的数值类型。以下是 NumPy 中一些最常用的数据类型:

  • numpy.bool_:布尔值(True 或 False),存储为一个字节
  • numpy.byte:有符号字符(取决于平台)
  • numpy.ubyte:无符号字符(取决于平台)
  • numpy.short:短整型(取决于平台)
  • numpy.ushort:无符号短整型(取决于平台)
  • numpy.intc:整型(取决于平台)
  • numpy.uintc:无符号整型(取决于平台)
  • numpy.int_:长整型(取决于平台)
  • numpy.uint:无符号长整型(取决于平台)
  • numpy.longlong:长长整型(取决于平台)
  • numpy.ulonglong:无符号长长整型(取决于平台)
  • numpy.half / numpy.float16:半精度浮点数
  • numpy.single:单精度浮点数(取决于平台)
  • numpy.double:双精度浮点数(取决于平台)
  • numpy.longdouble:扩展精度浮点数(取决于平台)
  • numpy.csingle:由两个单精度浮点数表示的复数
  • numpy.cdouble:由两个双精度浮点数表示的复数
  • numpy.clongdouble:由两个扩展精度浮点数表示的复数

这些数据类型的定义取决于平台,但为了方便起见,NumPy 也提供了固定大小的别名。

使用数据类型

NumPy 数据类型由 dtype(数据类型)对象表示。使用 import numpy as np 导入 NumPy 后,你可以通过 np.bool_np.float32 等访问数据类型。

你可以将数据类型用作函数,将 Python 数字转换为数组标量,将 Python 数字序列转换为该类型的数组,或者在许多 NumPy 函数或方法中作为 dtype 关键字的参数。以下是一些示例:

x = np.float32(1.0)
## x 现在是一个值为 1.0 的 float32 数组标量

y = np.int_([1,2,4])
## y 现在是一个值为 [1, 2, 4] 的 int 数组

z = np.arange(3, dtype=np.uint8)
## z 现在是一个值为 [0, 1, 2] 的 uint8 数组

你也可以使用字符代码引用数组类型,不过建议使用 dtype 对象。例如:

np.array([1, 2, 3], dtype='f')
## 返回一个值为 [1., 2., 3.] 且数据类型为 float32 的数组

要转换数组的类型,可以使用 .astype() 方法,也可以将类型本身用作函数。例如:

z.astype(float)
## 返回数据类型为 float64 的数组 z

np.int8(z)
## 返回数据类型为 int8 的数组 z

获取数组的数据类型

要确定数组的数据类型,可以访问 dtype 属性。例如:

z.dtype
## 返回数组 z 的数据类型,即 uint8

dtype 对象还包含有关该类型的信息,例如其位宽和字节顺序。可以使用 dtype 对象查询类型的属性,例如它是否为整数。例如:

d = np.dtype(int)
## 创建一个用于 int 的 dtype 对象

np.issubdtype(d, np.integer)
## 返回 True,表示 d 是 np.integer 的子数据类型

np.issubdtype(d, np.floating)
## 返回 False,表示 d 不是 np.floating 的子数据类型

总结

在本实验中,你学习了 NumPy 中可用的不同数值数据类型以及如何使用它们。你可以使用 dtype 对象将 Python 数字转换为数组标量、创建特定类型的数组以及修改数组的数据类型。理解数据类型对于使用 NumPy 执行数值计算和数据分析任务非常重要。