- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有人可以解释以下脚本输出背后的逻辑吗?
import numpy
if(numpy.dtype(numpy.float64) == None):
print "Surprise!!!!"
谢谢:)
最佳答案
看起来像一个不幸的事故:有人决定 dtype(None)
将“默认”为 float (尽管 dtype()
是一个错误)。然后其他人编写了 dtype.__eq__
以便在比较之前将其第二个参数转换为 dtype。所以 dtype(float) == None
是 dtype(float) == dtype(None)
这是真的。
您可以在此处查看源代码中的注释:descriptor.c#L1217
- Get typenum from an object -- None goes to NPY_DEFAULT_TYPE
当然 NPY_DEFAULT_TYPE 是 float 的(至少通常是这样)。
至于__eq__
操作符,在这里:descriptor.c#L3317 .它执行我概述的操作:
if (!PyArray_DescrCheck(other)) {
if (PyArray_DescrConverter(other, &new) == NPY_FAIL) {
return NULL;
}
}
所以这是从 ==
右侧的任何内容到 dtype 对象的转换,通过前面提到的转换器函数,将 None
转换为 dtype( float )
。
编辑:我发现这很有趣而且看起来像是个意外,所以我创建了一个补丁并提交给维护者:https://github.com/numpy/numpy/pull/4532 .
关于python - 为什么 numpy.dtype ('float64' ) 特别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575050/
我已经可以在其中输入一些附加文本了mydomain/wiki/Special:UserLogin。我添加了一句话: In order to apply for an account send an m
有人可以解释以下脚本输出背后的逻辑吗? import numpy if(numpy.dtype(numpy.float64) == None): print "Surprise!!!!" 谢谢
是我还是 gmail bulls**t?在 outlook/浏览器上,我的电子邮件是完美的,但在 gmail 上,2 个表之间有一个空间,为什么?!?图片:http://i.imgur.com/srJ
我是一名优秀的程序员,十分优秀!