Python:如何在两个单独的数组之间找到两个相等/最接近的值?

2024-04-22

假设我们有两个长度相等的数组:

arr1 = (21, 2, 3, 5, 13)
arr2 = (10, 4.5, 9, 12, 20)

哪个变量来自arr1 is 相等/最接近到一个变量arr2?

看看这两个列表,我们可以很容易地说最接近的数字是4.5 and 5。我试图实现一个函数,它返回给定两个列表的两个最接近的值,它有点works对于上面的例子,但这几乎不是一个解决方案,因为它不是最佳的。当我们稍微更改数组时,您可以轻松检查函数是否失败,如下所示:

arr1 = (21, 2, 3, 5, 13)
arr2 = (10, 4.5, 9, 12, 18)

函数返回的值为 13 和 18

这是函数:

def get_nearest(arr1, arr2):
    lr = [[0, 0, 0]]
    for x1 in arr1:
        for x2 in arr2:
            r = (x1 / x2 % (x1 + x2))
            print x1, x2, r
            if r <= 1 and r >= lr[0][2]:
                lr.pop()
                lr.append([x1, x2, r])
    return lr

你能想出一个更好的吗?


速度是个问题吗?你关心关系吗?如果没有,那么简单的事情怎么样?

from itertools import product
sorted(product(arr1, arr2), key=lambda t: abs(t[0]-t[1]))[0]

For both

arr1 = (21, 2, 3, 5, 13)
arr2 = (10, 4.5, 9, 12, 20)

and

arr1 = (21, 2, 3, 5, 13)
arr2 = (10, 4.5, 9, 12, 18)

这产生

(5, 4.5)

解释:

product(arr1, arr2) = [(a1, a2) for (a1, a2) in product(arr1, arr2)]

产生所有的列表N**2数字对:

[(21, 10), (21, 4.5), ..., (13, 12), (13, 20)]

然后我们按绝对差对它们进行排序(|a1 - a2|) using sorted。通过传递sorted the key关键字,我们告诉sorted使用排序标准lambda t: abs(t[0] - t[1])。绝对差最小的对放置在已排序数组的第一个索引中,因此我们可以通过定位来获取它[0]在最后。

Edit:

正如 Piotr 在评论中建议的那样,您可以提供key=func to min and max,这大大加快了速度。尝试改为:

from itertools import product
min(product(arr1, arr2), key=lambda t: abs(t[0]-t[1]))[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:如何在两个单独的数组之间找到两个相等/最接近的值? 的相关文章

  • 使用 InlineKeyboardButton python telegram bot 发送命令

    在Python电报机器人中 是否有可能InlineKeyboardButton发送类似命令 cancel当它被按下时 例如 当用户按下取消按钮时 他们将自动发送 cancel 命令 然后由机器人处理 从这里的例子来看 https githu
  • 为什么 pandas 在简单的数学运算上比 numpy 更快?

    最近 我观察到 pandas 的乘法速度更快 我在下面的例子中向您展示了这一点 如此简单的操作怎么可能做到这一点 这怎么可能呢 pandas 数据帧中的底层数据容器是 numpy 数组 测量 我使用形状为 10k 10k 的数组 数据框 i
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • 如何使用我自己的自定义表单覆盖 django-rest-auth 中的表单?

    我正在使用 django rest auth 并尝试通过覆盖表单的方法之一来修复密码重置视图中的错误 尽管我已经使用不同的 django rest auth 表单成功完成了类似的操作 但我无法让它在这个表单上工作 无论我做什么 都会使用旧的
  • 计算熊猫数据帧几个月的总和

    我有一个 pandas 数据框 如下所示 ID Year R1 R1 f KAR1 20201001 1 5 KAR1 20201101 2 6 KAR1 20201201 3 7 KAR1 20210101 4 8 KAR1 202102
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • Python 中 time.sleep 和多线程的问题

    我对 python 中的 time sleep 函数有疑问 我正在运行一个脚本 需要等待另一个程序生成 txt 文件 虽然 这是一台非常旧的机器 所以当我休眠 python 脚本时 我遇到了其他程序不生成文件的问题 除了使用 time sl
  • 如何在动态执行的代码字符串中使用inspect.getsource?

    如果我在文件中有这段代码 import inspect def sample p1 print p1 return 1 print inspect getsource sample 当我运行脚本时 它按预期工作 在最后一行 源代码sampl
  • 烧瓶 - 404 未找到

    我是烧瓶开发的新手 这是我在烧瓶中的第一个程序 但它向我显示了这个错误 在服务器上找不到请求的 URL 如果您输入了网址 请手动检查拼写并重试 这是我的代码 from flask import Flask app Flask name ap
  • 同一台机器上有多个Python版本?

    Python 网站上是否有关于如何在 Linux 上的同一台计算机上安装和运行多个版本的 Python 的官方文档 我可以找到无数的博客文章和答案 但我想知道是否有 标准 官方方法可以做到这一点 或者这一切都取决于操作系统 我认为它是完全独
  • 我可以在 if 语句中使用“as”机制吗

    是否可以使用as in if类似的声明with我们使用的 例如 with open tmp foo r as ofile do something with ofile 这是我的代码 def my list rtrn lst True if
  • 如何处理 Tkinter 中的窗口关闭事件?

    如何在 Python Tkinter 程序中处理窗口关闭事件 用户单击 X 按钮 Tkinter 支持一种称为协议处理程序 http web archive org web 20201111215134 http effbot org tk
  • 有没有办法拉伸整个显示图像以适应给定的分辨率?

    我最近一直在使用pygame制作游戏 遇到了一个小问题 基本上 我希望能够将屏幕上的整个图像 我已经传输到它的所有内容 拉伸到用户将窗口大小调整到的分辨率 我在 pygame 和堆栈溢出的文档中搜索了很多 但我似乎找不到答案 这可能吗 我的
  • 通过新数据更新绘图,而不是在 Jupyter 笔记本中制作新绘图

    我有一些问题 希望你能帮我解决 我需要使用下拉小部件创建交互式绘图 我可以在其中选择并绘制感兴趣的数据 我通过以下方式做到这一点 import plotly graph objects as go import ipywidgets as
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • 使用 Numpy 进行多维批量图像卷积

    在图像处理和分类网络中 一个常见的任务是输入图像与一些固定滤波器的卷积或互相关 例如 在卷积神经网络 CNN 中 这是一种极其常见的操作 我已将通用版本任务减少为 Given 一批 N 个图像 N H W D 和一组 K 个滤镜 K H W
  • 为什么我的 PyGame 应用程序根本不运行?

    我有一个简单的 Pygame 程序 usr bin env python import pygame from pygame locals import pygame init win pygame display set mode 400
  • python 日志记录替代方案 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 蟒蛇记录模块 http docs python org library logging html使用起来
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示

随机推荐

  • 绘制 matplotlib 图表以显示直方图箱中的总计数

    我正在尝试显示直方图 下面的数组是直方图每个单独箱的计数 binVals 0 5531608 6475325 1311915 223000 609638 291151 449434 1398731 2516755 3035532 29769
  • 如何制作轨道时间戳

    make 如何保留文件的时间戳 我正在尝试将我的 git 存储库部署到位 我正在为大多数不会改变的文件添加预编译的二进制文件 现在 当我从 git 签出存储库时 我不想编译这些 c 文件 我想使用这些预构建的二进制文件 因此 为了设置这个方
  • 如何在 MATLAB 中调整矩阵大小?

    假设我有一个1 by 12矩阵 我想将其调整为4 by 3矩阵 我怎么能这样做呢 我当前的解决方案有点丑陋 for n 1 length mat 3 out n 1 3 mat n 1 3 1 n 1 3 3 end 有一个更好的方法吗 r
  • JSF:使用 ajax 清除 inputTextArea 时出现奇怪的行为

    这是我所拥有的
  • 点击链接后如何导航回来?

    我对在 vba 中使用 IE 还很陌生 所以有时我很难纠正在编写从网络上抓取数据的代码时所犯的任何错误 我编写了一些代码来单击标题下 20 个链接中的每个视频链接Microsoft computer training videos可以在它的
  • 在硒自动化中,鼠标箭头移动是否可以用于测试用例

    我是硒的新手 我想知道如何向用户显示鼠标箭头移动 我的意思是说我们自动化某些事情 我想知道如何向用户显示鼠标箭头移动看到硒中正在进行的自动化 是否可以 我们能否清楚地显示正在单击的内容 我的意思是通过鼠标箭头移动单击了哪个按钮 我希望我很清
  • 更改为服务器端后如何获取标签文本?

    我试图在不回发时将标签的文本分配给隐藏字段 但失败了 这就是我所做的 If Not IsPostBack Then Dim structPayperiod As strcPayperiodDet structPayperiod objTim
  • 使用 ddply 进行汇总统计

    我喜欢使用编写一个函数ddply根据两列的名称输出汇总统计信息data frame mat mat是一个大data frame与列的名称 metric length species tree index index是具有 2 个水平的因子
  • 如何在 jQuery UI 中将多个可排序列表相互连接?

    我是 jQuery 新手 并且在使用 jQuery UI 时遇到了很大的困难sortable 我正在尝试整理一个页面以方便对项目进行分组和排序 我的页面有一个组列表 每个组都包含一个项目列表 我希望允许用户能够执行以下操作 重新排序组 对组
  • 在不知道键的情况下快速引用字典键和值

    我有一个字典数组定义为 var users String String 数组内的字典是一个简单的用户名 是 否标志 第一个用户 Y 第二个用户 N 第三个用户 N 在我的 TableView 单元格配置中 我定义了 let userReco
  • 浏览器和服务器在实践中是否使用 HTTP 内容协商?

    我正在学习关于HTTP内容协商 https developer mozilla org en US docs Web HTTP Content negotiation眼下 我已经了解客户端和服务器能够协商所请求内容的表示的基本方式 但我不知
  • 热点 JVM 字节码解释器是跟踪 JIT 吗?

    这个问题几乎说明了一切 我一直在寻找答案 甚至通过 VM 规范 但我没有明确说明 No 不过 还有一些其他 JVM 具有跟踪 JIT HotPath http HotPath GoogleCode Com and Maxine http L
  • 通过 jQuery tiny PubSub 传递数组

    jQuery 微型 PubSub https gist github com 661855在传递原始值或对象时非常有用 但在传递数组时会遇到一些问题 所以我必须将数组包装成一个对象 function var o subscribe func
  • JTable TableCellRenderer背景与Nimbus LookAndFeel颜色问题

    我正在使用 NimbusLookAndFeel 通过这种外观和感觉 JTable 的单元格背景可以是白色和浅灰色 这取决于行号 现在 我正在编写一些实现 TableCellRenderer 的自定义单元格渲染器 我需要根据 JTable 中
  • PHP 循环遍历表单值

    我有一个表单 提交了许多小字段 我需要循环遍历这些字段并对其执行操作 表格如下所示
  • 在 GoogleTest 中使用 ASSERT 和 EXPECT

    当 ASSERT 宏导致测试用例终止时 EXPECT 宏继续其评估 我想知道决定是否使用其中之一的标准是什么 Use ASSERT当条件must保持 如果没有 测试就在那里停止 当测试的其余部分在不满足此条件的情况下不具有语义意义时 请使用
  • 在使用 libstdc++ 进行调试期间强制使用 std::atomic 内部的锁

    我用谷歌搜索了一下 似乎找不到GCC选项或libstdc 库宏为此 是否可以强制在所有的内部使用锁定std atomic模板专业化 在某些平台上 某些专业化无论如何都会锁定 因此这似乎是一个可行的选择 过去我发现使用std atomic使用
  • 将 Java 日期向后更改一小时

    我有一个 Java 日期对象 Date currentDate new Date 这将给出当前日期和时间 例子 Thu Jan 12 10 17 47 GMT 2012 相反 我想获取日期 将其更改为一小时前 这样它应该给我 Thu Jan
  • GDB 函数参数上的条件中断

    我想在函数参数大于某个值时设置断点 下面的虚拟代码 int main void uint64 t num 123456 uint64 t x 847534 uint64 t other num x x num other stuff her
  • Python:如何在两个单独的数组之间找到两个相等/最接近的值?

    假设我们有两个长度相等的数组 arr1 21 2 3 5 13 arr2 10 4 5 9 12 20 哪个变量来自arr1 is 相等 最接近到一个变量arr2 看看这两个列表 我们可以很容易地说最接近的数字是4 5 and 5 我试图实