1、Python中的数据类型
在 Python 中,常见的内置数据类型包括:
string(字符串)
用于表示文本数据,字符串通常用引号包裹
例如:"ABC"、"cjavapy"integer(整数)
用于表示整数
例如:-1、0、100float(浮点数)
用于表示实数
例如:1.2、42.42boolean(布尔值)
用于表示逻辑值
例如:True、Falsecomplex(复数)
用于表示复数
例如:1.0 + 2.0j、1.5 + 2.5j
⚠️ Python 的这些类型是 动态类型,每个对象都包含额外的元数据,因此在大规模数值计算中效率较低。
2、NumPy 中的数据类型(dtype)
与 Python 不同,NumPy 中的数组要求 元素类型一致,并且每种类型都有明确的 内存大小。
NumPy 使用 dtype(data type) 来描述数组中每个元素的数据类型。
NumPy 常见数据类型及字符表示
| 字符 | 含义 |
|---|---|
i | 整数(integer) |
u | 无符号整数(unsigned integer) |
b | 布尔值(boolean) |
f | 浮点数(float) |
c | 复数(complex) |
m | 时间差(timedelta) |
M | 日期时间(datetime) |
O | 对象(object) |
S | 字节字符串(bytes) |
U | Unicode 字符串 |
V | 固定大小的原始内存块(void) |
这些类型使 NumPy 在 内存控制和性能优化 上远优于 Python 原生列表。
3、判断数组的数据类型
NumPy 数组对象提供了 dtype 属性,用于查看数组中元素的数据类型。
示例:查看整数数组的数据类型
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr.dtype)
输出示例:
int64
示例:查看字符串数组的数据类型
import numpy as np arr = np.array(['c', 'python', 'cjavapy']) print(arr.dtype)
输出示例:
<U7
说明:
U表示 Unicode 字符串7表示字符串最大长度为 7
4、创建具有已定义数据类型的数组
在使用 np.array() 创建数组时,可以通过 dtype 参数 显式指定数据类型。
示例:创建字符串类型数组
import numpy as np arr = np.array([1, 2, 3, 4], dtype='S') print(arr) print(arr.dtype)
输出示例:
[b'1' b'2' b'3' b'4'] |S1
指定数据类型大小
对于 i、u、f、S、U 等类型,还可以指定 字节大小。
示例:创建 4 字节整数数组
import numpy as np arr = np.array([1, 2, 3, 4], dtype='i4') print(arr) print(arr.dtype)
输出示例:
[1 2 3 4] int32
5、值无法转换的问题(ValueError)
如果数组中的某些元素 无法被强制转换为指定类型,NumPy 会抛出 ValueError 异常。
示例:无法将非数字字符串转换为整数
import numpy as np arr = np.array(['a', '2', '3'], dtype='i')
运行结果:
ValueError: invalid literal for int() with base 10: 'a'
📌 说明:
在指定 dtype 时,应确保所有元素 都可以安全转换。
6、转换现有数组上的数据类型
更改已有数组数据类型的推荐方式是使用 astype() 方法。
astype()会 创建数组的副本原数组 不会被修改
示例:浮点数 → 整数(使用字符)
import numpy as np
arr = np.array([1.1, 2.1, 3.1])
newarr = arr.astype('i')
print(newarr)
print(newarr.dtype)输出:
[1 2 3] int32
示例:浮点数 → 整数(使用 Python 类型)
newarr = arr.astype(int) print(newarr) print(newarr.dtype)
示例:整数 → 布尔值
import numpy as np arr = np.array([1, 0, 3]) newarr = arr.astype(bool) print(newarr) print(newarr.dtype)
输出:
[ True False True] bool