Python 中的最近邻搜索,无需 k-d 树

2024-01-13

我从 C++ 背景开始学习 Python。我正在寻找一种快速而简单的方法来查找多维点的 2D(numpy)数组(也是 numpy 数组)中某些多维查询点的最近(最近邻居)。我知道 scipy 有一个 k-d 树,但我不认为这是我想要的。首先,我将更改二维数组中多维点的值。其次,二维数组中每个点的位置(坐标)很重要,因为我还将更改它们的邻居。

我可以编写一个函数来遍历 2D 数组并测量查询点与数组中的点之间的距离,同时跟踪最小的点(使用 scipy 空间距离函数来测量距离)。是否有内置函数可以执行此操作?我试图尽可能避免在 python 中迭代数组。我还将有许多查询点,因此至少有两个“for 循环” - 一个用于迭代查询点,对于每个查询,一个循环用于迭代 2D 数组并找到最小距离。

感谢您的任何建议。


如果你的目标是简洁,你可以这样做:

In [14]: X = scipy.randn(10,2)

In [15]: X
Out[15]: 
array([[ 0.85831163,  1.45039761],
       [ 0.91590236, -0.64937523],
       [-1.19610431, -1.07731673],
       [-0.48454195,  1.64276509],
       [ 0.90944798, -0.42998205],
       [-1.17765553,  0.20858178],
       [-0.29433563, -0.8737285 ],
       [ 0.5115424 , -0.50863231],
       [-0.73882547, -0.52016481],
       [-0.14366935, -0.96248649]])

In [16]: q = scipy.array([0.91, -0.43])

In [17]: scipy.argmin([scipy.inner(q-x,q-x) for x in X])
Out[17]: 4

如果有多个查询点:

In [18]: Q = scipy.array([[0.91, -0.43], [-0.14, -0.96]])

In [19]: [scipy.argmin([scipy.inner(q-x,q-x) for x in X]) for q in Q]
Out[19]: [4, 9]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的最近邻搜索,无需 k-d 树 的相关文章

  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • 让 VoiceChannel.members 和 Guild.members 返回完整列表的问题

    每当我尝试使用 VoiceChannel members 或 Guild members 时 它都不会提供适用成员的完整列表 我从文本命令的上下文中获取 VoiceChannel 和 Guild 如下所示 bot command name
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 如何将 GAE 中一种 Kind 中的所有实体复制到另一种 Kind 中,而无需显式调用每个属性

    我们如何使用function clone entity 如中所述在 Python 中复制 Google App Engine 数据存储中的实体 而无需在 编译 时知道属性名称 https stackoverflow com question
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何使用 Boto3 启动具有 IAM 角色的 EC2 实例?

    我无法弄清楚如何使用指定的 IAM 角色在 Boto3 中启动 EC2 实例 以下是迄今为止我如何成功创建实例的一些示例代码 import boto3 ec2 boto3 resource ec2 region name us west 2
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 如何使用 PrimaryKeyRelatedField 更新多对多关系上的类别

    Django Rest 框架有一个主键相关字段 http www django rest framework org api guide relations primarykeyrelatedfield其中列出了我的 IDmany to m
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • 多个 AsyncHttpClient get 请求填充一项活动

    我有一个 GameActivity 为了填充布局 我必须多次调用远程 API 并想知道使用 AsyncHttpClient 包完成此操作的最佳方法http loopj com android async http http loopj co
  • 我如何从网络元素获取文本并在控制台中打印(例如)

    我在从网页上的元素获取文本时遇到问题 我正在使用 TestCafe e2e 框架 想要将文本 Web 元素的内容打印到控制台 你能提供一些代码吗 const getInnerText ClientFunction gt homePage k
  • executionTimeout 在 asp.net mvc 上不起作用

    我尝试在 web config 中为 asp net mvc 应用程序设置executionTimeout
  • 数组指针什么时候有用?

    我可以声明 int ap N So ap是指向大小为 N 的 int 数组的指针 为什么这很有用 如果我将它传递给函数 它可以用它做哪些有用的事情 而它不能用指向数组内容的普通指针来做 C常见问题解答说 2 12 如何声明一个指向数组的指针
  • Gradle Xpp3 错误

    我在为发布版本执行 gradle 构建时收到此错误 错误 xpp3 定义的类与现在提供的类冲突 安卓 解决方案包括寻找更新版本或替代方案 没有同样问题的库 例如 httpclient使用HttpUrlConnection或者okhttp代替
  • Git 对 *.reg 文件显示“二进制文件 a... 和 b... 不同”

    有没有办法强制 Git 处理 reg文件作为文本 我正在使用 Git 来跟踪我的 Windows 注册表调整和 Windows 使用情况 reg对于这些文件 更新1 我让它运行差异 谢谢 安德鲁 然而 现在看起来像下面这样 这是编码问题吗
  • 我可以使用 AngularJs 指令将样式应用于伪元素吗

    我希望我在这里没有遗漏一些明显的东西 但我正在尝试学习 Angular 并且在尝试制定指令时遇到了问题 我正在尝试构建一个指令 该指令将从数据属性 背景图像 获取 url 并将其作为背景图像应用到伪元素 但我无法弄清楚如何定位 before
  • 在 GitLab TeamCity 中显示构建状态

    我已成功将 TeamCity 配置为自动从 GitLab 提取新签入的更改并构建它 下一步 我希望 GitLab 中的构建状态图标能够反映 TeamCity 的构建状态 在每次构建 TeamCity 构建时 GitLab 继续显示 buil
  • 程序接收信号SIGTRAP,跟踪/断点陷阱

    我正在调试一个 嵌入式 软件 我在一个函数上设置了一个断点 出于某种原因 一旦我到达该断点并且continue我总是回到该函数 这是一个初始化函数 只能调用一次 当我删除断点时 并且continue GDB 告诉我 Program rece
  • jQuery UI 主题和 HTML 表格

    有没有办法使用 jQuery CSS 主题来设置 HTML 表格 CSS 主题 我的所有组件看起来都属于同一组 除了 HTML 表格看起来不同 那里有很多资源 支持 ThemeRoller 的插件 jqGrid http www trira
  • django 表单发布请求在 __init__ 方法上引发错误

    我有一个 django 表单 它从视图中获取参数来根据用户实例初始化多项选择字段 加载模板时表单工作正常 当我提交表格时init表单中的方法会引发错误 My Model模型 py from django db import models f
  • Node.js 递归列出文件的完整路径[重复]

    这个问题在这里已经有答案了 各位晚安 我在使用一些简单的递归函数时遇到了麻烦 问题是递归列出给定文件夹及其子文件夹中的所有文件 目前 我已经成功使用一个简单的函数列出目录中的文件 fs readdirSync copyFrom forEac
  • 使用竞争检测器时可以跳过特定测试吗?

    Go Race Detector 的 goroutine 限制为 8192 至少在我的系统上 我运行的一项测试是查看我的服务器代码如何处理大量同时打开的连接 现在我正在尝试 gt 15000 当我跑步时go test race 因此 该特定
  • listfragment 与我的主抽屉重叠

    我是Android新手 我正在创建一个应用程序 并且我有一个列表片段问题 因为列表显示但它与标题栏重叠 我必须添加边距顶部来改变它 而且我正在使用抽屉并且当我尝试时要打开它在选项抽屉上显示的列表 请让我粘贴代码和图像 以便您可以了解更多信息
  • ASP.NET 5 MVC 6 通用存储库模式

    一直在到处寻找教程什么的 我一直在尝试将 MVC5 的旧通用存储库模式实现到新的 MVC6 项目中 我设置了 3 个类库 Core Data and Service 但是有一个问题IDBset 似乎我的智能感知不喜欢它 我尝试添加Syste
  • Android 设备上的大型应用程序数据存储在哪里?

    我目前面临一个问题 我应该将我的对象结构存储在 Android 设备上 用例 我正在开始调用应用程序服务器 在异步任务 http developer android com reference android os AsyncTask ht
  • 确定给定金额的找零组合

    我的任务是使用暴力编写一个算法来确定不同方式的数量 以及给定数量的变化的相关组合 找零将使用以下硬币 便士 1 美分 镍币 5 美分 一角硬币 10 美分 和 25 美分 25 美分 e g 输入 16 表示变化16美分 输出 可以通过 6
  • 如何在Python中重塑networkx图?

    所以我创建了一种非常幼稚 可能效率低下 的生成哈斯图的方法 问题 我有 4 个维度 p q r s 我想统一显示它 超正方体 但我不知道如何重塑它 如何在 Python 中重塑 networkx 图 我见过一些人们使用的例子spring l
  • 调用 Windows 证书导出向导 .NET [重复]

    这个问题在这里已经有答案了 有谁知道如何在 C NET 中以编程方式调用 显示 Windows 证书导出向导 同时提供 X509 证书 我认为你必须 P InvokeCryptUIWiz 导出 http CryptUIWizExport来自
  • Python 中的最近邻搜索,无需 k-d 树

    我从 C 背景开始学习 Python 我正在寻找一种快速而简单的方法来查找多维点的 2D numpy 数组 也是 numpy 数组 中某些多维查询点的最近 最近邻居 我知道 scipy 有一个 k d 树 但我不认为这是我想要的 首先 我将