为什么 numpy.dtype('float64') 很特别?

2023-11-23

有人可以解释以下脚本输出背后的逻辑吗?

import numpy
if(numpy.dtype(numpy.float64) == None):
    print "Surprise!!!!"

谢谢 :)


看起来像是一场不幸的事故:有人决定dtype(None)将“默认”浮动(尽管dtype()是一个错误)。然后别人写了dtype.__eq__这样它在比较之前将其第二个参数转换为数据类型。所以dtype(float) == None is dtype(float) == dtype(None)这是真的。

您可以在此处看到源代码中的注释:描述符.c#L1217

  • 从对象获取 typenum -- None 转到 NPY_DEFAULT_TYPE

当然 NPY_DEFAULT_TYPE 是浮动的(至少通常是这样)。

至于__eq__运算符,它在这里:描述符.c#L3317。它执行我概述的操作:

if (!PyArray_DescrCheck(other)) {
    if (PyArray_DescrConverter(other, &new) == NPY_FAIL) {
        return NULL;
    }
}

所以这是从右侧的任何内容进行的转换==通过前面提到的转换器函数转换为 dtype 对象,该函数将None into dtype(float).

Edit:我发现这很有趣,而且看起来像是一个意外,所以我创建了一个补丁并提交给维护人员:https://github.com/numpy/numpy/pull/4532 .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 numpy.dtype('float64') 很特别? 的相关文章

随机推荐

  • 我应该尽可能使用并行流吗?

    使用 Java 8 和 lambda 可以轻松地将集合作为流进行迭代 并且使用并行流也同样容易 两个例子来自the docs 第二个使用并行流 myShapesCollection stream filter e gt e getColor
  • 在 Sphinx 文档中保留包装/修饰的 Python 函数的默认参数

    我该如何更换 args and kwargs带有装饰函数文档中的真实签名 假设我有以下装饰器和装饰函数 import functools def mywrapper func functools wraps func def new fun
  • 为什么将条件应用于 IAM 策略中的 ec2:DescribeInstances 会失败?

    当尝试配置可以使用策略列出哪些实例时 我注意到以下问题 当条件未实现时 所有实例都是可见的 当任何条件被实现时 什么都看不到 包含有条件的示例策略 Version 2012 10 17 Statement Sid Stmt146123588
  • 访问 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

    谁能告诉我为什么我无法访问注册表项 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Installer UserData 如果我查询GetSubKeysNames o
  • 优化 Jinja2 环境创建

    我的应用程序在 Google App Engine 上运行 由于 CPU 使用率高 大多数请求不断收到黄色标记 使用探查器 我将问题追溯到创建的例程jinja2 Environment实例 我正在模块级别创建实例 from jinja2 i
  • 为什么在 Intellij 中使用 Android SDK 时缺少 Android AVD Manager?

    I am trying to use the Android SDK in my IntelliJ project that is a larger project containing both web and ios clients a
  • Numpy:作为 Matlab 进行赋值和索引

    有时 分配仅具有一个索引的数组很有用 在 Matlab 中这很简单 M zeros 4 M 1 5 end 1 M 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Numpy 有没有办法做到这一点 首先 我想展平数组 但该操
  • 最适合拼写检查器、字典和同义词库的算法和数据结构

    实施的最佳方式 字典 有没有比 Trie 更好的 DS 字典 同义词库 不知道 因为匹配的是单词的含义 相似的含义 拼写检查器 比哈希映射更好的东西 如果可能的话 提供正确的拼写建议 当在一小时的面试中被问到 我们是否需要为算法编写 c c
  • Android 搜索:使用 FTS 表以及普通 SQLite DB 表

    这更多的是一个设计问题 而不仅仅是一个编码问题 我已经有一个将数据存储在 SQLite DB 表中的应用程序 现在我想添加搜索功能 据我了解 为了启用搜索功能 我需要 FTS 表 我拥有的表格是 不完全相同 但给出了非常相似的示例 内容表
  • Android 音频:改变音调

    SoundPool 的 Android 文档称 该应用程序还可以通过实时调整多普勒或合成效果的播放速率来改变音调 所以我尝试这样做 使用 setRate 方法从一个音符平滑地变化到另一个音符 但结果很糟糕 声音变化非常参差不齐 这是我尝试过
  • MySQL 使用 CONCAT 条件进行选择

    我正在尝试在脑海中编译它 我有一个包含名字和姓氏字段的表 我有一个像 Bob Jones 或 Bob Michael Jones 这样的字符串以及其他几个字符串 问题是 例如我有 鲍勃的名字 以及 迈克尔 琼斯的姓氏 所以我想 SELECT
  • Java流是否有相当于带有变量赋值的while

    是否存在与以下内容等效的流 List
  • Tensorflow 从元图中打印所有占位符变量名称

    我有一个张量流模型 其中有 meta 和检查点文件 我试图打印模型所需的所有占位符 而不查看构建模型的代码 以便我可以在不知道模型是如何创建的情况下构建输入 feed dict 作为参考 这里是模型构建代码 在另一个文件中 def save
  • 优秀的 setjmp/longjmp 教程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 你好 我想阅读有关 C 语言 setjmp longjmp 的优秀教程 如果有真实的而不是人造的示例 那就更好了 Thanks 这并不是一个真正的教程 而是libpng 文档描述该库
  • 应用程序更新后共享首选项丢失

    我一整天都在研究这个问题 以下是要点 共享首选项should当用户更新应用程序时保持持久性 就我而言 更新应用程序后 它们丢失了 这个问题每次都会重现 我从 Play 商店安装旧的 APK 然后adb install r new apk使用
  • 色彩校正 MP4/Webm 视频

    我有一个大型视频 其中一些动画对于其他嵌入方法 gif png 序列等 来说太复杂 太长 并且我们遇到了视频中颜色的问题 本质上 我们将网页背景作为视频的一部分 以防止视频播放时出现任何边缘 我们正在尝试使视频上的渐变背景与网页上的渐变背景
  • Jenkins 的 Github 插件获取提交者和作者姓名

    如果我理解得很好 git 插件会将提交者和作者的姓名以及电子邮件暴露给环境变量GIT AUTHOR NAME GIT COMMITTER NAME GIT AUTHOR EMAIL and GIT COMMITTER EMAIL基于git的
  • Netbeans 等待连接到 XDEBUG

    Netbeans 不会连接到 xdebug 我尝试过以下帖子中的建议 调试 IDE 与 XDebug 的端口连接 等待连接 netbeans 显示 正在等待连接 netbeans xdebug 但这并不能解决我的问题 Netbeans 似乎
  • 带分隔符的 Android 列表视图

    我想创建一个带有分隔符的列表视图 就像在默认联系人应用程序中一样 我的应用程序需要对列表进行排序 并用分隔符分隔项目 如联系人应用程序中的字母顺序排序 能够使用分隔符标题进行滚动将是一个额外的优势 任何指示都会有帮助 谢谢 看看这个开源项目
  • 为什么 numpy.dtype('float64') 很特别?

    有人可以解释以下脚本输出背后的逻辑吗 import numpy if numpy dtype numpy float64 None print Surprise 谢谢 看起来像是一场不幸的事故 有人决定dtype None 将 默认 浮动