NumPy-数据类型


NumPy 是一个用于科学计算的核心库,提供了高效的多维数组对象和操作工具。Num值是 NumPy 中用于表示数值数据的基础数据结构,称为 ndarray。在使用 NumPy 时,理解数据类型(dtype)是非常重要的,因为它决定了数据存储的方式以及可以执行的操作。

1. NumPy 数据类型(dtype)

dtype(数据类型)是 NumPy 中用于指定数组元素类型的对象。NumPy 支持丰富的数据类型,包括整数、浮点数、布尔值等,具体类型可以根据需求指定。

2. 常见的 NumPy 数据类型

(1) 整数类型 (int)

NumPy 支持多种整数类型,它们根据存储的字节数来分类。常见的整数类型有:

  • int8:8 位整数(-128 到 127)
  • int16:16 位整数(-32,768 到 32,767)
  • int32:32 位整数(-2,147,483,648 到 2,147,483,647)
  • int64:64 位整数(-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807)

示例:

import numpy as np
arr = np.array([1, 2, 3], dtype=np.int32)  # 指定数据类型为int32
print(arr)

(2) 无符号整数类型 (uint)

这些类型用于表示无符号整数,即只有正整数(包括零)。

  • uint8:8 位无符号整数(0 到 255)
  • uint16:16 位无符号整数(0 到 65,535)
  • uint32:32 位无符号整数(0 到 4,294,967,295)
  • uint64:64 位无符号整数(0 到 18,446,744,073,709,551,615)

示例:

arr = np.array([0, 255, 100], dtype=np.uint8)  # 指定数据类型为uint8
print(arr)

(3) 浮点类型 (float)

浮点数类型表示带有小数的数字。常见的浮点数类型有:

  • float16:16 位浮点数,精度较低。
  • float32:32 位浮点数,通常用于存储大多数科学计算。
  • float64:64 位浮点数,高精度浮点数,常用于需要高精度计算的场景。

示例:

arr = np.array([1.1, 2.2, 3.3], dtype=np.float64)  # 指定数据类型为float64
print(arr)

(4) 复数类型 (complex)

复数数据类型用于存储复数值,NumPy 也提供了复数数据类型。

  • complex64:32 位浮点数表示实部和虚部(每个浮点数 32 位)。
  • complex128:64 位浮点数表示实部和虚部(每个浮点数 64 位)。

示例:

arr = np.array([1+2j, 3+4j, 5+6j], dtype=np.complex128)  # 指定数据类型为complex128
print(arr)

(5) 布尔类型 (bool)

布尔类型表示 TrueFalse 值,通常用于逻辑运算和条件判断。

  • bool:布尔类型,存储 TrueFalse

示例:

arr = np.array([True, False, True], dtype=np.bool_)
print(arr)

(6) 字符串类型 (str)

字符串类型用于存储文本数据。

  • strunicode:表示字符串,NumPy 支持固定长度的字符串和可变长度的字符串。

示例:

arr = np.array(['apple', 'banana', 'cherry'], dtype=np.str_)
print(arr)

(7) 日期和时间类型 (datetime)

NumPy 还提供了日期和时间的数据类型,适用于时间序列数据。

  • datetime64:用于表示日期和时间。

示例:

arr = np.array(['2024-01-01', '2024-02-01'], dtype='datetime64[D]')
print(arr)

(8) 对象类型 (object)

当数据类型非常复杂或不规则时,object 类型允许存储任意对象,例如列表、字典等。

  • object:存储任意类型的数据。

示例:

arr = np.array([{'a': 1}, {'b': 2}], dtype=object)
print(arr)

3. 查看 NumPy 数组的数据类型

可以通过 dtype 属性查看 NumPy 数组的类型:

arr = np.array([1, 2, 3], dtype=np.int32)
print(arr.dtype)  # 输出: int32

4. 转换数据类型

可以使用 astype() 方法将 NumPy 数组的元素转换为不同的类型:

arr = np.array([1.1, 2.2, 3.3])
arr_int = arr.astype(np.int32)  # 转换为整数类型
print(arr_int)

5. 总结

NumPy 提供了多种数据类型,覆盖了整数、浮点数、复数、布尔值、字符串、时间戳等。正确理解和选择数据类型不仅能提高代码的性能,还能确保数据存储和运算的精度和效率。在使用 NumPy 进行数据分析时,合理选择和转换数据类型是非常重要的。