scipy 笔记:spatial.KDTree

1 方法介绍 

scipy.spatial.KDTree(data, leafsize=10, compact_nodes=True, copy_data=False, balanced_tree=True, boxsize=None)

用于快速最近邻查找的kd树

对于大维数(20已经很大),不要期望这比暴力搜索快很多。高维最近邻查询是计算机科学中一个重大的未解问题。

2 参数

data

类数组,形状为 (n,m)

要索引的n个m维数据点

leafsize算法转为暴力搜索的数据点数。默认值为10。
compact_nodes

布尔值,可选【默认值为True】

如果为True,则构建kd树时会缩小超矩形到实际数据范围。

这通常会生成更紧凑的树,它对退化输入数据具有较强的鲁棒性,并且可以在增加构建时间的代价下加速查询。

copy_data

布尔值,可选

如果为True,则数据总是被复制以保护kd树免受数据损坏。

默认值为False。

balanced_tree

布尔值,可选

如果为True,则使用中位数而不是中点来分割超矩形。

这通常会生成更紧凑的树并加速查询,但增加了构建时间。

默认值为True。

3 举例

from scipy.spatial import KDTreecoordinates
#假设有这个列表存在
'''
array([[116.30633576,  39.97985419],[116.32477106,  40.00140643],[116.32925162,  39.99218811],...,[116.33828523,  39.94021838],[116.31098946,  40.00380335],[116.34905741,  39.86500981]])
'''kdtree = KDTree(coordinates)

3 属性

data要索引的n个m维数据点
leafsize算法转为暴力搜索的数据点数
m单个数据点的维度
n数据点的数量
maxes

n个数据点每个维度的最大值

形状为 (m,)

mins

n个数据点每个维度的最小值

形状为 (m,)

size树中的节点数

4 主要方法

4.1 query

KDTree.query(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)

查询kd树以找到最近的邻居

x要查询的点数组
k返回最近邻居的数量
eps返回近似最近邻居;返回的第k个值保证不超过到真实第k个最近邻居距离的(1+eps)倍
p

使用哪种闵可夫斯基p范数。

1是绝对值之和距离(“曼哈顿”距离)。

2是常规的欧几里得距离。

无穷大是最大坐标差距离

distance_upper_bound仅返回在此距离内的邻居
workers

用于并行处理的工作线程数量。

如果给出-1,则使用所有CPU线程。默认值:1

distances, indices = kdtree.query(coordinates, k=11)
distances
'''
array([[0.        , 0.0021747 , 0.00407019, ..., 0.00590605, 0.00600945,0.00630101],[0.        , 0.00180668, 0.00237115, ..., 0.00559552, 0.00621217,0.00663365],[0.        , 0.00250751, 0.00310879, ..., 0.00522053, 0.00541728,0.00606105],...,[0.        , 0.0034222 , 0.00344221, ..., 0.00610721, 0.00616627,0.00771157],[0.        , 0.0010156 , 0.00140355, ..., 0.00474158, 0.00477727,0.00556775],[0.        , 0.00234204, 0.00589404, ..., 0.01846328, 0.01884219,0.01942178]])
'''indices
'''
array([[  0, 518, 603, ..., 526, 345, 559],[  1,  12,   7, ..., 204,  56,   5],[  2, 124, 245, ..., 133,  96,  93],...,[904, 852, 386, ...,  57, 253, 147],[905, 380,  10, ..., 154, 117, 739],[906, 646, 880, ..., 465, 129, 219]], dtype=int64)
'''

4.2 query_ball_point

找到距离点x一定距离r内的所有点

KDTree.query_ball_point(x, r, p=2.0, eps=0, workers=1, return_sorted=None, return_length=False)
x要查询的点数组
r要返回的点的半径,必须与x的长度广播
eps

近似搜索。

如果树的分支最近的点比 r / (1 + eps) 更远,则不探索这些分支;

如果它们最远的点比 r * (1 + eps) 更近,则批量添加这些分支

p

使用哪种闵可夫斯基p范数。

1是绝对值之和距离(“曼哈顿”距离)。

2是常规的欧几里得距离。

无穷大是最大坐标差距离

workers

用于并行处理的工作线程数量。

如果给出-1,则使用所有CPU线程。默认值:1

return_sorted

如果为True,则对返回的索引进行排序;

如果为False,则不排序

如果为None,不排序单点查询,但对多点查询进行排序

return_length返回半径内点的数量而不是索引列表

4.3  query_pairs

KDTree.query_pairs(r, p=2.0, eps=0, output_type='set')

找到自身中距离最多为r的所有点对

r最大距离
p

使用哪种闵可夫斯基p范数。

1是绝对值之和距离(“曼哈顿”距离)。

2是常规的欧几里得距离。

无穷大是最大坐标差距离

eps

近似搜索。

如果树的分支最近的点比 r / (1 + eps) 更远,则不探索这些分支;

如果它们最远的点比 r * (1 + eps) 更近,则批量添加这些分支

output_type选择输出容器,‘set’或‘ndarray’。默认为‘set’

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yo!这里是网络入门初识

目录 前言 基本概念 网络 协议 地址 网络传输流程 OSI七层模型 TCP/IP四层(五层)模型 流程图 数据封装&&分用 后记 前言 对于上一个专栏——Linux操作系统,我们学习了操作系统的基础知识以及基本的系统编程,其…

前端面试题大合集2----基础篇

目录 1、事件模型 2、什么是事件委托/事件代理 3、说一下Commonjs、AMD和CMD 4、Ajax原理 5、说一下XHR和Fetch的区别 6、实现一个once函数,传入函数只执行一次 7、js监听对象属性的改变 8、如何解决跨域问题 9、介绍js有哪些内置对象 10、介绍js有哪些方法…

setTimeout回调函数 this指向问题

本文主要介绍setTimeout的回调函数的this指向问题 例子1:回调函数是一个普通函数 setTimeout 的回调函数是一个普通函数,而不是箭头函数,因此它有自己的上下文,this 指向全局对象(在浏览器中是 window 对象&#xff…

十大排序算法之——冒泡排序算法(Java实现)及思路讲解

冒泡排序是一种简单的排序算法,通过重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的…

挤压激励注意力 SE | Squeeze-and-Excitation Networks

论文名称:《Squeeze-and-Excitation Networks》 论文地址:https://arxiv.org/pdf/1709.01507.pdf 代码地址: https://github.com/hujie-frank/SENet 卷积神经网络 (CNN) 的核心构建块是卷积运算符,它使网络能够通过在每一层的局…

Linux进程基础概念子进程的创建

有着上一节我们对操作系统和冯诺依曼体系结构的理解,本篇我们便可以开始对 Linux 中的进程开始讲解。在本篇中对进程的基本概念进行了简单的介绍,然后通过对描述进程的 PCB,与 Linux 中的 task_struct 的详细讲解,使得对进程的概念…

Android Widget开发代码示例详细说明

因为AppWidgetProvider扩展自BroadcastReceiver, 所以你不能保证回调函数完成调用后,AppWidgetProvider还在继续运行。 a. AppWidgetProvider 的实现 /*** Copyright(C):教育电子有限公司 * Project Name: NineSync* Filename: SynWidgetProvider.java * Author(S…

界面组件DevExpress Blazor UI v23.2 - 网格、工具栏功能全新升级

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。 DevExpress Blazor控件目前已经升级…

数字文旅重塑旅游发展新生态:以数字化转型为契机,推动旅游产业的创新发展,提升旅游服务的智能化、网络化和个性化水平

目录 一、引言 二、数字化转型推动旅游产业创新发展 1、数字化转型提升旅游产业效率 2、数字化转型拓展旅游产业边界 3、数字化转型促进旅游产业可持续发展 三、提升旅游服务智能化、网络化和个性化水平 1、智能化提升旅游服务体验 2、网络化拓宽旅游服务渠道 3、个性…

爬虫的实战应用之短信炸弹playwright现代网页测试工具

不讲废话,先上原理: 短信炸弹,也就是说持续对一个手机进行发送短信,实现的方式就是,利用某些网站的登录 ,注册的时候,发送短信验证码来实现。 如下图,其中有一个id为phone的输入框&a…

亲子公园实景剧本杀小程序系统开发

亲子公园实景剧本杀小程序系统开发涉及到多个方面的内容,具体步骤如下: 1. 系统需求分析:了解客户的需求和期望,明确开发目标和功能需求。 2. 系统架构设计:根据需求分析结果,设计系统的整体架构&#xf…

CODEFORCES --- 9A. Die Roll

9A. Die Roll 亚科、瓦科 和多特 是世界著名的动画片演员,他们决定暂停动画片的表演,休假去旅行。亚科梦想去宾夕法尼亚州,那里是他的祖国,也是他祖先的祖国。瓦科想到了塔斯马尼亚,那里有海滩、阳光和大海。小不点选…

配置nodejs的俩小脚本

介绍:共两个脚本。 脚本1,用来配置环境变量,生成环境变量所需的配置信息,然后自己添加到系统环境变量里去 特别注意:该脚本需要放到nodejs目录下面,如果不是,则无法生成环境变量配置文本内容 另…

Java23种设计模式-创建型模式之原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有对象来生成新对象,而无需编写从头开始创建新对象的代码。 优点:可以克隆对象,无需与它们所属的具体类相耦合;可以克隆预生成原型,避免…

Java代码审计-flink-streaming-platform-web

前言 项目地址:GitHub - zhp8341/flink-streaming-platform-web: 基于flink的实时流计算web平台 flink-streaming-platform-web是一个将flink封装的一个可视化的、轻量级的flink web客户端系统,用户只需在web 界面进行sql配置就能完成流计算任务。 项目…

海外IP代理中的HTTP/SOCKS5协议都有哪些区别?

随着互联网大数据的兴起,代理ip也成为了很多用户完成任务时不可缺少的部分,代理ip随着出现的主要作用是变换ip,突破ip限制等问题,使用过代理ip的用户都知道,代理ip分为很多种,长效,短效及不同协…

【Elasticsearch<一>✈️✈️】简单安装使用以及各种踩坑

目录 🍸前言 🍻一、软件安装(Windows版) 1.1、Elasticsearch 下载 2.1 安装浏览器插件 3.1、安装可视化工具 Kibana 4.1、集成 IK 分词器 🍺二、安装问题 🍹三、测试 IK 分词器 ​🍷 四、章…

可以根据linux终端指令 得出.db文件的数据库类型吗

可以根据.db文件得出数据库的的类型吗 根据提供的引用内容,可以根据.db文件得出数据库的类型。具体的方法是通过查看.db文件的文件头来确定数据库类型。不同的数据库类型有不同的文件头标识符。例如,SQLite数据库的文件头标识符是"SQLite format 3…

动态规划入门和应用示例

文章目录 前言斐波那契数列爬楼梯总结优点:缺点: 前言 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的数学方法。它主要用于解决一类具有重叠子问题和最优子结构性质的问题。…

mysql允许ip远程访问

1.找到自己mysql所安装数据库的bin目录地址 例如:G:\mysql-5.7.23-winx64\bin 2.搜索cmd打开命令提示符进入这个bin目录 注意:如果目录不在c盘需要切换盘符。 切换访问步骤如下(如上例子在G盘) (1)先输入 g: &am…