许多numpy函数都将dtype参数作为字符串(如"float64"
)或numpy数据类型(如numpy.float64
)或者甚至是python数据类型(如float
)。将numpy数据类型与字符串进行比较
我需要比较两个数据类型,并希望支持这个灵活的接口。是否有一个函数,所有这些形式都是等价的?即我想最小功能f
这样
f("float64") == f(numpy.float64) == f(float)
是什么numpy的内部使用?
许多numpy函数都将dtype参数作为字符串(如"float64"
)或numpy数据类型(如numpy.float64
)或者甚至是python数据类型(如float
)。将numpy数据类型与字符串进行比较
我需要比较两个数据类型,并希望支持这个灵活的接口。是否有一个函数,所有这些形式都是等价的?即我想最小功能f
这样
f("float64") == f(numpy.float64) == f(float)
是什么numpy的内部使用?
您应该阅读描述数据类型层次结构的numpy文档的Scalars页面。可以使用np.issubdtype。一些例子:
>>> import numpy as np
>>> np.issubdtype(np.int32, int)
True
>>> np.issubdtype(np.int32, float)
False
>>> np.issubdtype(float, np.floating)
True
>>> np.issubdtype(float, np.inexact)
True
>>> np.issubdtype(np.float32, float)
True
>>> np.issubdtype(np.float32, int)
False
>>> np.issubdtype(np.float32, np.floating)
True
最简单的方法是每次创建一个新的numpy.dtype
对象,因为它具有所有必需的类型规范化/标准化和已经内置的等式检查。实际上,我没有看过内部,因此它可能不会为numpy
已有的(如使用numpy.array
并不总是创建新阵列)创建新实例dtype
,这将非常有效。
numpy.float64 == numpy.dtype('float64') == numpy.dtype(numpy.float64) == numpy.dtype(float)
numpy.int32 == numpy.dtype('int32') == numpy.dtype(numpy.int32) == numpy.dtype(int)
啊,我没有想到子类型比较。尼斯。 – JAB
看起来比a.dtype.name中的'int'更可取 – beardc