numpy.float
和numpy.float64
之间似乎有细微的差别。
>>> import numpy as np
>>> isinstance(2.0, np.float)
True
>>> isinstance(2.0, np.float64)
False
有人能解释一下吗?由于 np.float
是python float
类型的别名。np.float32
和np.float64
是numpy特定的32位和64位浮点类型。
float?
Init signature: float(self, /, *args, **kwargs)
Docstring:
float(x) -> floating point number
Convert a string or number to a floating point number, if possible.
Type: type
np.float?
Init signature: np.float(self, /, *args, **kwargs)
Docstring:
float(x) -> floating point number
Convert a string or number to a floating point number, if possible.
Type: type
np.float32?
Init signature: np.float32(self, /, *args, **kwargs)
Docstring: 32-bit floating-point number. Character code 'f'. C float compatible.
File: c:pythonlibsite-packagesnumpy__init__.py
Type: type
np.float64?
Init signature: np.float64(self, /, *args, **kwargs)
Docstring: 64-bit floating-point number. Character code 'd'. Python float compatible.
File: c:pythonlibsite-packagesnumpy__init__.py
Type: type
因此,当你执行isinstance(2.0, np.float)
时,它相当于isinstance(2.0, float)
,因为2.0是一个普通的python内置float类型…而不是numpy类型。
isinstance(np.float64(2.0), np.float64)
显然是True
这似乎是32位浮点数和64位浮点数之间的区别(在C中,是浮点数与双精度数),而2.0最终是32位浮点数。