gpt4 book ai didi

python - isinstance() 和 np.issubdtype() 有什么区别?

转载 作者:行者123 更新时间:2023-12-05 07:15:06 25 4
gpt4 key购买 nike

我有一个数据框 df:

>>> df = pd.DataFrame({'values':[1.23, 3.12, 23.12]}, dtype=float)

运行检查:

>>> df.values.dtype
dtype('float64')

现在使用 isinstance 方法:

>>> isinstance(df.values.dtype, float)
False

现在使用 issubdtype 方法:

>>> np.issubdtype(df.values.dtype, float)
True

通过阅读文档。

语法 isinstance (object, classinfo)

对象:对象实例。

我正在传递一个 ndarray 对象(我可以将其视为对象实例吗?)

类信息:类、类型或包含类、类型或其他元组的元组。

我传递的是 float,它是一种很好的类型。

问题是:为什么上面例子中的isinstance没有返回true呢? isinstance 和 issubdtype 之间有什么区别?

最佳答案

why is the isinstance not returning true in the above example?

因为df.values.dtype 返回一个类型,而不是那个类型的对象。事实上,df.values.dtype 返回 dtype('float'),但这不是 float < em>对象。它是一个 dtype 对象。

issubdtype 采用数据类型、类型或字符串 并检查第一个类型是否相同或第二个类型的子类。我们可以检查类型的方法解析顺序,并查看:

>>> df.values.dtype.type.__mro__
(<class 'numpy.float64'>, <class 'numpy.floating'>, <class 'numpy.inexact'>, <class 'numpy.number'>, <class 'numpy.generic'>, <b><class 'float'></b>, <class 'object'>)

所以该类型确实是float 的子类。但它不是 float 的实例。 float 的实例是例如 0.03.14np.nan 等。如果我们检查这些对象的类型,我们得到:

>>> type(0.0)
<class 'float'>
>>> type(3.14)
<class 'float'>
>>> type(np.nan)
<class 'float'>

dtype('float') 的类型是 dtype,而对于 float,它只是 type :

>>> type(df.values.dtype)
<class 'numpy.dtype'>
>>> type(float)
<class 'type'>

因此我们可以检查 df.values.dtypedtype 的一个实例并获得:

>>> isinstance(df.values.dtype, np.dtype)
True

关于python - isinstance() 和 np.issubdtype() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59702581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com