numpy 广播如何执行得更快?

2024-04-09

在下面的问题中,https://stackoverflow.com/a/40056135/5714445 https://stackoverflow.com/a/40056135/5714445

Numpy 的广播提供了一种解决方案,其速度几乎比使用 np.setdiff1d() 与 np.view() 配对快 6 倍。它是如何做到这一点的?

并使用A[~((A[:,None,:] == B).all(-1)).any(1)]速度会更快。 有趣,但又提出了另一个问题。这如何表现得更好?


我会尝试回答问题的第二部分。

因此,我们正在与它进行比较:

A[np.all(np.any((A-B[:, None]), axis=2), axis=0)]  (I)

and

A[~((A[:,None,:] == B).all(-1)).any(1)]

为了与第一个方法的匹配视角进行比较,我们可以这样写下第二种方法 -

A[(((~(A[:,None,:] == B)).any(2))).all(1)]         (II)

考虑性能时的主要区别在于,对于第一个,我们通过减法得到不匹配,然后通过检查非零值.any(). Thus, any()用于对非布尔数据类型数组进行操作。在第二种方法中,我们向它提供一个布尔数组,该数组是通过A[:,None,:] == B.

让我们做一个小的运行时测试来看看如何.any()执行于int数据类型与boolean array -

In [141]: A = np.random.randint(0,9,(1000,1000)) # An int array

In [142]: %timeit A.any(0)
1000 loops, best of 3: 1.43 ms per loop

In [143]: A = np.random.randint(0,9,(1000,1000))>5 # A boolean array

In [144]: %timeit A.any(0)
10000 loops, best of 3: 164 µs per loop

所以,与接近9x这部分的加速,我们看到了使用的巨大优势any()与布尔数组。我认为这是使第二种方法更快的最大原因。

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

numpy 广播如何执行得更快? 的相关文章

  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • Python zmq SUB 套接字未接收 MQL5 Zmq PUB 套接字

    我正在尝试在 MQL5 中设置一个 PUB 套接字 并在 Python 中设置一个 SUB 套接字来接收消息 我在 MQL5 中有这个 include
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • “隐藏”内置类对象、函数、代码等的名称和性质[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很好奇模块中存在的类builtins无法直接访问的 例如 type lambda 0 name function of module
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • 如何让 Gitlab CI Pipeline 始终运行某些作业,而仅在合并请求时运行其他作业?

    TL DR 我的目标是拥有一个 Gitlab CE 12 4 2 管道 该管道仅在合并请求上执行某些作业 而始终执行其他作业 在合并请求上和所有正常推送上 必须如何 gitlab ci yml想要这样做吗 我的用例 我有一个运行大量作业的大
  • 定义 Pydantic(嵌套)模型

    如果我使用 GET 给定一个 id 我会得到一个 JSON 如下所示 data id 81 ks k1 25 k2 5 items id 1 name John surname Smith id 2 name Jane
  • node.js +express.js +dust.js 问题

    简单的问题 为什么express js 不能与dust js 一起运行 我知道它没有得到官方支持 但dust js 甚至与我的node js 版本存在问题 由于 require path 问题 节点甚至无法启动 server testapp
  • 无法将 javascript 库加载到 Meteor 应用程序中

    我在使用 Fabric js 库与 Meteor 应用程序时遇到问题 不幸的是 我无法完全完成将其添加到我的应用程序的阶段 更不用说调用它了 最简单的休闲方式如下 gt mrt create test gt cd test gt mkdir
  • 如何在iOS APP中手动包含动态库

    我有一个 iOS 应用程序 不是用 xcode 制作的 我需要在其中包含一个动态库 我的电脑上有这个库 webrtc WebRTC framework Headers h Modules module modulemap WebRTC In
  • wireshark 和 tcpdump -r:奇怪的 tcp 窗口大小

    我正在使用 tcpdump 捕获 http 流量 并且对 TCP 慢启动以及窗口大小如何增加感兴趣 sudo tcpdump i eth1 w wget tcpdump tcp and port 80 当我使用 Wireshark 查看转储
  • 如何使用 jquery 淡入文本装饰 css?

    我有以下代码 This is a span sentence span 当用户将鼠标悬停在sentence 我希望在单词下方淡入下划线 这似乎是一个简单的问题 但我一直不知道如何最好地做到这一点 需要明确的是 我不能只使用css hover
  • Firefox 错误地记住单选按钮

    在 Firefox 7 0 1 中 我有两个复选框和许多其他输入 当我通过 jQuery 添加另一个输入时 Firefox 无法正确记住选择了哪些无线电输入 例如 如果我选择第一个单选按钮 然后刷新页面 则选择第二个单选按钮而不是第一个单选
  • 如何使用 Facebook Graph API 执行 FQL 查询

    我正在寻找一种使用新的 Open Graph API 执行 FQL facebook 查询语言 查询的方法 但没有成功 有谁知道我该怎么做 通过这个优秀的例子在这里找到了答案 http code google com p facebook
  • 无头 Linux 上的命令行“Android update sdk”

    如何在无头 Linux 服务器上更新 安装 Android SDK 平台 我得到的只是以下错误 似乎实际上不支持 更新 sdk 操作 android sdk linux 86 tools android verbose update sdk
  • 为什么有 2 种 AppFabric?

    我看到我们现在拥有 Windows Server AppFabric 和 Azure AppFabric 这只是 Microsoft 营销部门的命名空间冲突还是这些技术共享通用接口 有人告诉我 可以在本地生产服务器上使用 Azure App
  • 如何在 iOS 程序退出时关闭 UIManager 文档

    我有一个围绕全局 UIManagedDocument 核心数据 的 iOS 程序 我想知道如何确保它在程序退出之前正确保存和关闭 首先 如果我想确保在退出之前保存该文档 我应该 可以打电话吗 void closeWithCompletion
  • 如何在 socket.io python 服务器中获取连接客户端的会话 ID?

    我有这样的事情 from flask import Flask jsonify request render template Response from flask socketio import SocketIO emit app Fl
  • 如何将图例放在情节之外

    我有一系列 20 个图 不是子图 要在一个图中绘制 我希望图例是在盒子之外的 同时 我不想更改轴 因为图形的尺寸会减小 我想将图例框保留在绘图区域之外 我希望图例位于绘图区域右侧的外部 有没有办法减小图例框内文本的字体大小 从而使图例框的尺
  • Sequelize 创建具有关联的对象

    我正在尝试保存续集模型及其关联 所有关联都是一对一的 从数据库中检索具有关联的模型效果很好 但插入它们是另一回事 而且文档只会让我更加困惑 这是我的插入方法 models radcheck create user include model
  • 将csv文件导入access的VBA程序

    我需要 VBA 中的程序将数据从 csv excel 文件导入到 access 而不需要一些记录 如页眉和页脚 例如 我在 csv 文件中有一个表 其中包含一些 不属于表日期的句子 A1 这是一些句子标题 A2标题A3 A7 数据数据数据数
  • Azure VM的公共静态IP [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有什么方法可以赋值Azure VM 的公共静态 IP 我是否必须通过 Azure 虚拟网络进行操作
  • 如何使用 Tailwindcss 创建真正的粘性页眉/页脚(即使滚动也粘在底部)?

    很多博客和帖子声称使用 Tailwindcss 创建 粘性页脚 但我找不到thought关于内容超过简短的 hello world 行的情况 例如在none在这些示例中 如果主区域足够高可以滚动 则页脚会 粘住 https www goma
  • 用于分配视口元参数的脚本,iPhone / iPad 难题

    我正在使用 JavaScript 片段根据浏览器窗口的宽度设置视口元标记的内容参数 该脚本几乎完成了它应该做的事情 它将任何大屏幕设备的初始比例值设置为 1 将纵向模式下的 iPad 设置为 0 5 并将任何屏幕宽度小于 700px 的设备
  • numpy 广播如何执行得更快?

    在下面的问题中 https stackoverflow com a 40056135 5714445 https stackoverflow com a 40056135 5714445 Numpy 的广播提供了一种解决方案 其速度几乎比使