Python超矩形
文章目录
- 距离函数
- 矩形分割
Rectangle是
scipy.spatial中封装的类,其构造函数只需输入最小值和最大值的数组即可,并且可通过内置的
volume方法计算广义的体积。
from scipy.spatial import Rectanglerec = Rectangle((0,0), (5,5))
print(rec.maxes) # [5. 5.]
print(rec.mins) # [0. 0.]
print(rec.volume()) # 25
rec3 = Rectangle((0,0,0), (5,5,5))
print(rec3.volume()) # 125
距离函数
通过min_distance_point/max_distance_point可以计算某点到矩形内部的最近/最远距离
print(rec.min_distance_point((3,3)))
# 0.0
print(rec.max_distance_point((3,3)))
# 4.242640687119285
由于(3,3)在矩形内部,所以最小距离为0;而最大距离则位于(0,0)处。
通过min_distance_rectangle/max_distance_rectangle方法可以计算一个矩形和另一个矩形之间的最小/最大距离
rec2 = Rectangle((5,5),(10,10))
rec.max_distance_rectangle(rec2, 2)
# 14.142135623730951
rec.min_distance_rectangle(rec2, 2)
# 0.0
由于两个矩形存在交点,所以最近距离为0,而最远距离则在(0,0), (10,10)之间。
这4个距离函数均采用闵可夫斯基距离的定义,默认阶数为2,通过第二个参数p,可以修改距离的定义。对于点 x , y x,y x,y而言,具体的距离公式为
d p = ∑ i ∣ x i − y i ∣ p p d_p = \sqrt[p]{\sum_i \vert x_i-y_i\vert^p} dp=pi∑∣xi−yi∣p
>>> rec.max_distance_point((3,3),1)
6.0
当p=1时,表示曼哈顿距离,即 ∑ i ∣ x i − y i ∣ \sum_i |x_i-y_i| ∑i∣xi−yi∣,对于 ( 0 , 0 ) (0,0) (0,0)到 ( 3 , 3 ) (3,3) (3,3)来说就是 3 + 3 = 6 3+3=6 3+3=6。
矩形分割
通过split,可以对矩形进行分割,其输入参数有2,分别是分割所在坐标轴,以及该坐标轴处的刻度,效果如下
rec.split(0, 2)
(<Rectangle [(0.0, 2.0), (0.0, 5.0)]>, <Rectangle [(2.0, 5.0), (0.0, 5.0)]>)
由于Rectangle定义的超矩形可以有不同的维度,换言之,一维的矩形就是线段,三维的矩形就是立方体。一旦接受了这种设定,那么矩形分割就可以理解为线段分割,或者立方体分割。有了这个,就可以更加便捷地进行非线性寻优了。
在scipy.optimize中,提供了DIRECT算法,运用的就是这种思想。
而在点云处理中使用更加频繁的八叉树,则是矩形分割更加直观的案例,open3d中实现了这种算法,以二维超矩形为例,则其运算流程可理解为四叉树。
仍以六个数据点作为研究对象:{(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)},如果以 [ 0 , 10 ) [0,10) [0,10)为坐标空间,那么通过对这个空间四等分,可得到下左图
![]() | =》 | ![]() |
令所有的分割都是左闭右开的,那么被分割后的四个区间中,除了右下角的方块包含三个点之外,剩下三个方块都只有一个点。只有一个点的方块显然就没法继续分割了,而第四个方块则可继续分割,得到右图。
这样,右下角的方块被继续分成了四个小方块,且每个小方块的元素都不超过一个,所以无法继续再分,四叉树也就完成了。
相关文章:
Python超矩形
文章目录 距离函数矩形分割 Rectangle是 scipy.spatial中封装的类,其构造函数只需输入最小值和最大值的数组即可,并且可通过内置的 volume方法计算广义的体积。 from scipy.spatial import Rectanglerec Rectangle((0,0), (5,5)) print(rec.maxes) …...
【软考数据库】第五章 计算机网络
目录 5.1 网络功能和分类 5.2 OSI七层模型 5.3 TCP/IP协议 5.4 传输介质 5.5 通信方式和交换方式 5.6 IP地址 5.7 IPv6 5.8 网络规划和设计 5.9 其他考点补充 5.10 网络安全技术 5.11 网络安全协议 前言: 笔记来自《文老师软考数据库》教材精讲ÿ…...
深眸科技|深度学习、3D视觉融入机器视觉系统,实现生产数智化
随着“中国制造2025”战略加速落实,制造业生产线正在加紧向智能化、自动化和数字化转型之路迈进。而人工智能技术的兴起以及边缘算力持续提升的同时,机器视觉及其相关技术也在飞速发展,并不断渗透进工业领域,拓展应用场景的同时&a…...
DateFormat使用时需要注意:多线程下需要特殊处理
前言 工作或学习过程中难免会接触到时间(Date)相关的内容,比如String类型转为Date类型,或者Date类型转为String类型,jdk为我们提供了一套完善的日期格式化工具,DateFormat类,使用者可以使用该接…...
Packet Tracer - 研究直连路由
Packet Tracer - 研究直连路由 目标 第 1 部分:研究 IPv4 直连路由 第 2 部分:研究 IPv6 直连路由 拓扑图 背景信息 本活动中的网络已配置。 您将登录路由器并使用 show 命令发现并回答以下有关直连路由的问题。 注:用户 EXEC 密码是 c…...
大专生程序员找工作的一点小建议 知识分享 经验分享
最近呢有人在私信我 就问我说我呢是一个大专生 大专毕业 学历呢也不是很好 我但是我学的是这个计算机 这样一个专业 然后呢现在找工作找不到 就这样的一个要求 让我们呢给一些建议 当然就是私底下在网上聊吗 就会给 也相信 我的一个建议是什么样的 就是你首先你要去找工作的 首…...
PyCaret:低代码自动化的机器学习工具
PyCaret简介 随着ChatGPT和AI画图的大火,机器学习作为实现人工智能的底层技术被大众越来越多的认知,基于机器学习的产品也越来越多。传统的机器学习实现方法需要较强的编程能力和数据科学基础,这使得想零基础尝试机器学习变得非常困难。 机器…...
【Hello Network】网络编程套接字(三)
作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:简单介绍下各种类型的Tcp协议 各种类型Tcp服务器 多进程版的TCP网络程序捕捉SIGCHLD信号让孙子进程执行任务 多线程TCP网络程序线程池版多线程TCP网络…...
3.4 只读存储器
学习目标: 学习只读存储器(ROM)的目标可以包括以下内容: 了解ROM的基本概念、分类以及适用场景。掌握ROM的电路原理、逻辑结构和读取方式。熟悉ROM的编程方式和编程工具。理解ROM与EPROM、EEPROM和闪存的区别和联系。了解ROM在计…...
从后端开发转大数据开发怎么样?
很多做后端的小伙伴,在某一个瞬间,都想转行大数据,那这种想法可行嘛? 转大数据的最初原因很简单,就是好几个同事都转了,他们的收入瞬间提高了好多,于是在同事的内推我也就跟着转了,…...
编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误?
重写push与replace方法 编程式导航路由跳转到当前路由(参数不变),多次执行会抛出NavigatorDuplicated的禁告错误? 路由跳转有俩种形式:声明式导航,编程式导航 声明式导航没有这类问题的,因为…...
AppArmor无内核及系统日志的问题及解决
在AppArmor中,正常情况下,一旦违反了规则,是能够在内核及系统日志中看到相关信息的。比如:在Ubuntu下正常产生的日志信息(示例)如下: kernel: [140321.028000] audit(1191433716.584:1578): t…...
本地更改配置ssh密钥和更改github网址
配置 SSH 密钥以进行身份验证,可以遵循以下步骤: 生成SSH密钥 打开 Git Bash 终端 在 Windows 上,可以打开 Git Bash 终端。通常,可以在开始菜单中搜索 Git Bash 并启动它。一旦打开了 Git Bash 终端,将进入一个基于…...
MATLAB函数封装2:QT调用封装函数
在利用MATLAB进行封装函数之后,最主要的目的是对函数进行调用,能够对矩阵运算和其他算法的运行进行快捷处理。 在有了MATLAB函数之后封装成DLL文件之后,在QT中添加动态链接库,就可以实现函数的调用过程,这个过程相对简…...
AJAX和JSON
1、什么是AJAX? AJAX(ASynchronous JavaScript And XML)异步的JavaScript 和 XML; 由Jesse James Garrett 在他的文章AJAX:A New Approoch to Web Applications中首次提出。 ajax(Web数据交互方式)_百…...
源码:SharedPreferences分析
一、持久化方式: DataStore:稳定性 MMKV:效率 SharedPreferneces 区别: 功能MMKVJetpack DataStoreSharedPreferneces是否阻塞主线程否否是是否线程安全是 是 是是否支持跨进程是否否是否类型…...
大二一个学期学这么点内容,没有概念,只有实操
如何查看所有的数据库: Show databases; 如何进入某个数据库: use xxx; 如何新进数据库: Create database jx; 如何删除数据库: Drop database jx; 如何查看所有的表格: Show tables; 如何创建数据表…...
AppWeb 身份验证绕过漏洞 (CVE-2018-8715)
当前漏洞环境部署在vulhub,当前验证环境为vulhub靶场(所有实验均为虚拟环境) 实验环境:攻击机----kali 靶机:centos7 1、进入靶场,启动环境 2、访问AppWeb控制台:http://your-ip:8080 使用用户名、密码adm…...
为什么监控摄像头画面不如手机拍摄视频画面清晰
一天和一个做餐饮的朋友吃饭聊天,他提出一个问题,几百块的监控摄像头就是纯粹做监控功能 ,视频拍摄的画面为什么还没有几百元的手机拍摄的视频画面清晰,对于此特意查了一下技术资料,整理一下,以备下次再详细…...
EU GMP附录一与关键区域空气微生物取样方案及相关法规标准解读
2022版EU GMP附录一与关键区域空气微生物取样方案疑问解答 3月30日2022版EU GMP附录一与关键区域空气微生物取样方案网络研讨会期间,我们收集到了部分参会听众针对该主题所提出的常见问题。根据以下这些问题,lighthouse微生物应用专家将来为您答疑解惑。…...
百度网盘直链解析工具:告别限速,3分钟实现全速下载!
百度网盘直链解析工具:告别限速,3分钟实现全速下载! 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘那令人抓狂的下载速度而…...
从零搭建一个智能视频监控系统:3D定位、ONVIF控制与Python UI实战
从零搭建智能视频监控系统:3D定位、ONVIF控制与Python UI实战 在智能安防和物联网应用蓬勃发展的今天,具备3D定位功能的视频监控系统正成为行业新宠。本文将带您从零开始,基于树莓派或普通PC,结合支持ONVIF协议的球型摄像机&#…...
Kafka 3.0.0 集群部署、性能验证与基准测试实战指南
1. Kafka 3.0.0集群部署实战 第一次部署Kafka集群时,我被它复杂的配置项弄得头晕眼花。经过多次实践后,我发现只要抓住几个关键点,就能轻松搭建一个稳定的生产环境。下面分享我的实战经验,帮你避开那些我踩过的坑。 1.1 集群规划…...
Xarray数据处理的隐藏神器:rioxarray实战,用SHP文件精准裁剪NetCDF气象数据
Xarray数据处理的隐藏神器:rioxarray实战,用SHP文件精准裁剪NetCDF气象数据 在气象、海洋和遥感领域,NetCDF格式的网格数据几乎是科研和业务工作中的标配。当我们面对全球或大区域的高分辨率数据集时,往往只需要提取其中某个特定区…...
从运维老鸟视角看:为什么我依然推荐在2024年新服务器上安装CentOS 8.5(附最小化安装与安全加固清单)
2024年企业级服务器操作系统选择:CentOS 8.5的实战价值与安全实践 当各大技术社区都在讨论Rocky Linux和AlmaLinux如何完美替代CentOS时,作为一名经历过RHEL 4到CentOS Stream时代变迁的老运维,我依然会在特定场景的服务器采购清单上写下&quo…...
【Nginx】Nginx index 指令全解:从首页加载失败到高性能目录服务的生产实践
Nginx index 指令全解:从首页加载失败到高性能目录服务的生产实践 本文面向已部署过简单 Nginx 服务、了解反向代理概念,但尚未系统掌握其静态文件目录索引与默认首页机制的中高级工程师。我们将彻底拆解 index 指令的工作原理、继承规则、与 try_files 的协作边界,揭示为何…...
特斯拉Model 3无线充电垫DIY:基于Qi标准与3D打印的集成方案
1. 项目概述:为你的特斯拉Model 3打造专属无线充电垫作为一个喜欢在车里折腾点小玩意儿的车主,我总觉得特斯拉Model 3中控台那两个USB-C接口有点不够用,每次上车给手机充电都得插线,线缆还容易在储物格里缠成一团。原厂虽然提供了…...
MATLAB仿真GPS调制和捕获
一,中频数据捕获: 当捕获通道状态空闲时,启动中频数据存储,此时根据当前要捕获的卫星的来选择射频通道,并将相应的载波频率和码频率写入寄存器中,使能存储操作;当一次捕获运算完成之后,需要重新存储中频数据。 卫星选择:初始化时,将所有卫星设置为待捕获状态,用一…...
STL编程中EN/ENO机制详解:从原理到仿真实践
1. 项目概述:理解STL中的EN/ENO机制在工业自动化编程领域,尤其是可编程逻辑控制器(PLC)的编程中,结构化文本(STL)是一种高级的、类似于Pascal或C的文本化编程语言。对于从梯形图(LAD…...
从电机控制到服务器电源:详解功率MOSFET栅极外加电容CGS与CGD的选型计算与布局要点
功率MOSFET栅极电容设计实战:从电机驱动到服务器电源的差异化策略 在电力电子系统的核心地带,功率MOSFET如同精密交响乐团的指挥,其开关性能直接决定整个系统的效率与可靠性。当我们面对电机驱动系统要求快速切换以降低损耗,或是服…...

