🔍 numpy.dtype
是什么?
numpy.dtype
是 NumPy 的数据类型对象,用于表示数组中元素的类型。
在 NumPy 中,每个数组都有一个 .dtype
属性,比如:
import numpy as np
arr = np.array([1, 2, 3], dtype=np.int32)
print(arr.dtype) # 输出: int32
arr.dtype
返回的是 numpy.dtype
对象,它表示数组的数值类型。
📌 numpy.dtype
的特性
-
numpy.dtype
是一个对象,不是字符串:import pandas as pd df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']}) print(df.dtypes)
输出:
col1 int64 col2 object dtype: object
这里
col1
的dtype
其实是:df.dtypes['col1'] # 输出:dtype('int64')
dtype('int64')
是 一个numpy.dtype
对象,而不是字符串'int64'
。 -
不能直接与字符串比较:
print(df.dtypes['col1'] == 'int64') # False print(df.dtypes['col1'] == np.int64) # True
直接与
'int64'
这样的字符串比较会返回False
,因为'int64'
是字符串,而dtype('int64')
是numpy.dtype
。
🚀 如何正确使用 numpy.dtype
?
✅ 1. 统一转换为字符串
如果你想用字符串比较,可以转换 dtype
:
dtype_str = str(df.dtypes['col1'])
print(dtype_str) # 'int64'
if dtype_str == 'int64':
print("是整数列")
这样 dtype_str
变成字符串,就能正常匹配 'int64'
了。
✅ 2. 直接用 pd.api.types
检测数据类型
Pandas 提供了 更安全的类型判断方法:
import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['A', 'B', 'C']})
from pandas.api.types import is_numeric_dtype, is_object_dtype
print(is_numeric_dtype(df['col1'])) # True
print(is_object_dtype(df['col2'])) # True
💡 推荐使用 is_numeric_dtype()
和 is_object_dtype()
进行类型检查,不要直接比对 dtype
。
🎯 结论
numpy.dtype
是 NumPy 的数据类型对象,不是字符串。- 不能直接用
== 'int64'
进行比较,应先str(dtype)
转换。 - 推荐用
pd.api.types.is_numeric_dtype()
和is_object_dtype()
判断类型,更可靠! 🚀