NumPy 数据类型比较

2024-04-08

我正在比较两个不同数组的数据类型,以选择适合组合两者的一个。我很高兴发现我可以执行比较操作,但在这个过程中发现了以下奇怪的行为:

In [1]: numpy.int16 > numpy.float32
Out[1]: True

In [2]: numpy.dtype('int16') > numpy.dtype('float32')
Out[2]: False

谁能解释一下这是怎么回事?这是 NumPy 1.8.2。


第一个比较没有意义,第二个比较is有意义的。

With numpy.int16 > numpy.float32我们正在比较两个type对象:

>>> type(numpy.int16)
type
>>> numpy.int16 > numpy.float32 # I'm using Python 3
TypeError: unorderable types: type() > type()

在 Python 3 中,这种比较会立即失败,因为没有定义顺序type实例。在 Python 2 中,返回一个布尔值,但不能依赖于一致性(它会回退到比较内存地址或其他实现级别的东西)。

第二次比较does在 Python 3 中工作,并且它一致地工作(与 Python 2 相同)。这是因为我们现在正在比较dtype实例:

>>> type(numpy.dtype('int16'))
numpy.dtype
>>> numpy.dtype('int16') > numpy.dtype('float32')
False
>>> numpy.dtype('int32') < numpy.dtype('|S10')
False
>>> numpy.dtype('int32') < numpy.dtype('|S11')
True

这个排序背后的逻辑是什么?

dtype实例根据一个实例是否可以(安全)转换为另一个实例进行排序。一种类型是少于如果可以的话另一个安全施放到那种类型。

对于比较运算符的实现,请参见描述符.c https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/descriptor.c;特别是在arraydescr_richcompare https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/descriptor.c#l3451功能。

这是什么<运算符映射到:

switch (cmp_op) {
 case Py_LT:
        if (!PyArray_EquivTypes(self, new) && PyArray_CanCastTo(self, new)) {
            result = Py_True;
        }
        else {
            result = Py_False;
        }
        break;

本质上,NumPy 只是检查这两种类型是否 (i) 不等价,以及 (ii) 第一种类型可以转换为第二种类型。

此功能也在 NumPy API 中公开为np.can_cast http://docs.scipy.org/doc/numpy/reference/generated/numpy.can_cast.html:

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

NumPy 数据类型比较 的相关文章

  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • Pandas 连接问题:列重叠但未指定后缀

    我有以下数据框 print df a mukey DI PI 0 100000 35 14 1 1000005 44 14 2 1000006 44 14 3 1000007 43 13 4 1000008 43 13 print df b
  • 组和平均 NumPy 矩阵

    假设我有一个任意的 numpy 矩阵 如下所示 arr 6 0 12 0 1 0 7 0 9 0 1 0 8 0 7 0 1 0 4 0 3 0 2 0 6 0 1 0 2 0 2 0 5 0 2 0 9 0 4 0 3 0 2 0 1 0
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • 如何在Python代码中查找列号

    简短问题 当按上述方式调用函数时 我可以找到行号here https stackoverflow com questions 3056048 filename and line number of python script 同样 如何找到
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 如何正确导入主代码和模块中同时使用的模块?

    假设我有一个主脚本 main py 它导入另一个 python 文件import coolfunctions另一个 import chores 现在 假设 Coolfunctions 也使用家务活中的东西 因此我声明import chore
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • Selenium 不会在新选项卡中打开新 URL(Python 和 Chrome)

    我想使用 Selenium WebDriver 和 Python 在不同的选项卡中打开相当多的 URL 我不确定出了什么问题 driver webdriver Chrome driver get url1 time sleep 5 driv
  • Django Rest Framework POST 更新(如果存在或创建)

    我是 DRF 的新手 我阅读了 API 文档 也许这是显而易见的 但我找不到一个方便的方法来做到这一点 我有一个Answer与 a 具有一对一关系的对象Question 在前端 我曾经使用 POST 方法来创建发送到的答案api answe
  • 在python中读取PASCAL VOC注释

    我在 xml 文件中有注释 例如这个 它遵循 PASCAL VOC 约定
  • python dicttoxml 多次使用相同的键

    我正在尝试做如下所示的 xml
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • 如何更改matplotlib中双头注释的头大小?

    Below figure shows the plot of which arrow head is very small 我尝试了下面的代码 但它不起作用 它说 引发 AttributeError 未知属性 s k 属性错误 未知属性头宽
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut

随机推荐

  • 在 SQL 数据库中保持 RSS 提要唯一的最佳实践

    我正在开发一个项目 该项目显示来自不同站点的 RSS 提要 我将它们保存在数据库中 我的程序每 3 小时获取一次并将它们插入到 SQL 数据库中 我希望提供者有独特的记录 不要显示重复的内容 但问题是一些提供商不提供 GUID 字段 而其他
  • 全局 $sce.trustAsResourceUrl()

    我怎样才能做这样的事情 sce trustAsResourceUrl URL HERE 在全球范围内 就像在主应用程序中一样config or run 函数 以便任何 iFrame img src 等具有URL HERE将工作 文档对此的解
  • 在rabbitmq配置spring boot中在AMQP中配置多个Vhost

    我正在实现一个项目 我必须在rabbitmq中的不同虚拟主机之间发送消息 使用 SimpleRoutingConnectionFactory 但得到 java lang IllegalStateException 无法确定查找键的目标 Co
  • 休眠:不想节省毫秒

    我遇到了一个小问题 我在网上没有找到合适的解决方案 因为我的问题对于搜索引擎来说有点棘手 有很多关于休眠节省毫秒的主题 但我的问题是别的 事实上 我有一个数据库 它保存我的日期 如下所示 2014 03 20 10 58 09 I used
  • 如何使用 cartopy 添加点特征形状文件以进行地图绘制

    我有两个形状文件 一个是点要素形状文件 名为 point shp 另一个是名为 polygon shp 的多边形形状文件 我想使用 cartopy 添加到地图中 我设法添加 polygon shp 但添加 point shp 失败 这是我的
  • android gradle MonkeyTalk 构建问题

    我正在使用 MonkeyTalk 来进行写入测试这个演示 https github com georgepapas android gradle monkey talk demo 我正在使用 AndroidAnnotations 2 7 1
  • gridview 中 nvarchar 附近的语法不正确

    我在更新 gridview 的列时遇到问题 当我尝试更新该字段时出现此错误 nvarchar 附近的语法不正确 必须声明标量变量 pid 这是我的一段代码
  • 使用下拉列表在 Plotly 中交互式过滤数据表

    我正在尝试制作一个交互式表格 其中通过从下拉列表中选择一个值来更改表格的值 这应该只在 Plotly 而不是 Dash 中完成 因为我需要与其他用户共享文件 例如 如果我选择通道 1 那么表格应该是 Date A item B item C
  • 以编程方式切换 UIAlert 控制器

    我正在快速创建一个注册对话框 其中包含 3 个文本字段和一个开关 并且我成功添加了三个文本字段和两个警报 下面的代码显示了相同的内容 let alertController UIAlertController title Register
  • Mendeley API - 如何使用 JavaScript SDK - 隐式流身份验证

    我希望您不会介意我提出问题 因为我不是程序员 需要 傻瓜式 解释 虽然我可以使用基本的 JavaScript 但我从未使用过 API 这就是我想做的 我在硬盘上制作了一个 HTML 页面 我最终希望将其与 PhoneGap 之类的东西打包到
  • 在 iCarouselTypeRotary 视图中隐藏背面图像

    我已将图像设置为轮播 https github com nicklockwood iCarousel 当我滚动轮播时 它会显示正面和背面的图像 我不想在后面显示图像 请帮忙 谢谢 您应该实现委托 CGFloat carousel iCaro
  • HTML 输入值更改

    我有一个 PHP 更新页面 其中显示一个包含数据库中的值的文本字段 就是这样 并且正在工作
  • 按最新回复时间排列论坛帖子

    在你喊之前ORDER BY id 情况就大不相同了 我被要求建立的论坛是一个留言板论坛 未注册的用户可以在其中回复和发帖 对帖子的回复缩进在被回复的帖子下方 当然 这都是无序列表中的 一个简短的例子 主帖 回复帖子 对回复的回复 另一个回复
  • jupyter 笔记本显示 matplotlib 错误键“text.kerning_factor”的错误消息

    import pandas as pd import numpy as np import matplotlib pyplot as plt 第 4 行的错误键 text kerning factor home samyak anacond
  • iOS UICollectionView 原型单元格大小属性被忽略

    我正在使用带有两个原型单元的 UICollectionView 原型单元具有不同的宽度并包含不同的控件 图像视图和网页视图 我肯定会为给定索引返回正确的原型单元格 所有单元格都显示正确的内容 但原型单元格大小将被忽略 而会使用集合视图的项目
  • Android App ID前缀问题

    我正在构建一个适用于 Android 的 Adob e Air 应用程序 但遇到了一个大问题 我使用旧的 Flash Air 扩展向 Android 市场发布了一个应用程序 该扩展保存了带有前缀 app 的应用程序 ID 现在我已经升级了扩
  • 可以忽略 ReactiveObject 的初始值吗?

    使用 ReactiveUI 是否可以忽略给定 ReactiveObject 的初始值 例如 我初始化了一个 ViewModel 然后我WhenAnyValue在视图模型上 我立即收到通知 该值是null为我选择的财产 是的我可以 Where
  • JVM 内存类型

    我正在做一个监控项目 我们有监控软件正在运行并从服务器重新收集指标 一切工作正常 但我们需要一些有关 JVM 内存使用情况详细信息 我们有一些具有不同内存类型的列 我们需要知道这些是什么 Heap Non Heap Usage Peak C
  • Kafka 快速入门:我需要哪些依赖项?

    我正在研究卡夫卡快速入门 http kafka apache org 07 quickstart html http kafka apache org 07 quickstart html 以及基本的消费者组示例 https cwiki a
  • NumPy 数据类型比较

    我正在比较两个不同数组的数据类型 以选择适合组合两者的一个 我很高兴发现我可以执行比较操作 但在这个过程中发现了以下奇怪的行为 In 1 numpy int16 gt numpy float32 Out 1 True In 2 numpy