为什么numpy.dtype('float64')很特殊?
问题内容:
有人可以解释以下脚本输出背后的逻辑吗?
import numpy
if(numpy.dtype(numpy.float64) == None):
print "Surprise!!!!"
谢谢 :)
问题答案:
如果您想将任意对象与None
python中的对象进行完全比较,则需要使用:
object is None
像在这种情况下一样,任何对象都可能会覆盖其比较运算符以不执行您期望的操作。
至于为什么,dtype(’float64’)在dtypes的上下文中等效于None,就像dtypes等同于typestrings一样
np.dtype('i4') == 'i4'
True
平等不是身份。
至于为什么dtype(None) == dtype('float64')
,numpy中的许多函数都有dtype=None
关键字参数。在大多数情况下,这意味着默认dtype为dtype(None)
。一个例子是np.zeros
。但是也有例外,例如当可以从参数推断出dtype时,例如np.arange(10)
默认dtype将为整数类型的情况(np.intp
我认为)。