实现两个点集的欧式距离和cos距离和索引值寻找(含有两种解法,for循环和矩阵操作)

一.计算欧式距离

1,直接for循环

两个点集points1,points2,用dist来存储距离 

points1=np.array([[1,2],[3,4]])
points2 = np.array([[5, 6],[7,8]])
dist = np.zeros(shape=[points1.shape[0],points2.shape[0]])
for i in range(points1.shape[0]):for j in range(points2.shape[0]):print(points1[i, :] - points2[j, :])

遍历两个点集的索引相减值

加上这句话

print(np.square(points1[i, :] - points2[j, :]))

print(np.sum(np.square(points1[i, :] - points2[j, :])))

print(np.sqrt(np.sum(np.square(points1[i, :] - points2[j, :]))))

points1=np.array([[1,2],[3,4]])
points2 = np.array([[5, 6],[7,8]])
dist = np.zeros(shape=[points1.shape[0],points2.shape[0]])
for i in range(points1.shape[0]):for j in range(points2.shape[0]):# print(points1[i, :] - points2[j, :])# print('======================')# print(np.square(points1[i, :] - points2[j, :]))# print('============================')# print(np.sum(np.square(points1[i, :] - points2[j, :])))# print(np.sqrt(np.sum(np.square(points1[i, :] - points2[j, :]))))dist[i, j] = np.sqrt(np.sum(np.square(points1[i, :] - points2[j, :])))
print(dist)

ind = np.unravel_index(np.argmax(dist), dist.shape)
print(ind)

返回索引值

2,矩阵操作求欧式距离

假设有两个三维向量集,用矩阵表示:

要求A,B这两个矩阵中的元素两两之间的欧式距离。

先求出

然后对分别求其中每个向量的模平方,并扩展为2*3矩阵:

然后:

 

将上面这个矩阵一开方,就得到了A,B矩阵各个元素两两之间的欧式距离。

import numpy as np
A=np.array([[1,2],[3,4]])
print('A=',A)
B=np.array([[5,6],[7,8]])
print('B=',B)BT=np.transpose(B)
print('BT=',BT)
A_BT=np.dot(A,BT)
print('A_BT=',A_BT)Asq=A**2
Asq=np.tile(np.sum(Asq,axis=1,keepdims=True),(1,A_BT.shape[1]))
print('Asq=',Asq)Bsq=BT**2
Bsq=np.tile(np.sum(Bsq,axis=0,keepdims=True),(A_BT.shape[0],1))
print('Bsq=',Bsq)print(Asq+Bsq-2*A_BT)
ED=np.sqrt(Asq+Bsq-2*A_BT)
print('ED=',ED)
ind=np.unravel_index(np.argmax(ED),ED.shape)
print(ind)
print(ED[ind[0],ind[1])

二.计算cos距离


import numpy as np
a = np.array([[1, 2],[3, 4]])
b = np.array([[1, 2],[3, 4],[1, 0]])
c = np.dot(a, np.transpose(b))
print('==c:', c)
norm_a = np.sqrt(np.sum(np.square(a), axis=-1))
print('==norm_a:', norm_a)
norm_b = np.sqrt(np.sum(np.square(b), axis=-1))
print('==norm_b:', norm_b)
base = np.dot(norm_a.reshape(norm_a.shape[0], 1), norm_b.reshape(1, norm_b.shape[0]))
print('base:', base)
print('===c/base:', c/base)

 

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

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

相关文章

数字图像处理实验四图像频域增强

一、实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法。 (2)熟练掌握低通、高通、带通、同态滤波器的使用方法,明确不同性质的滤波器…

卡耐基梅隆大学专家谈核心技术市场化:「AI 周边相关机遇最大」

来源:ZDnet、机器之能编译 | 张玺摘要:技术市场化之难在哪?创业家最常犯什么错误?每位立志创业的朋友都应该研究下这篇对卡耐基梅隆 (CMU) 大学专家的采访。CMU 是全美技术转移最成功的机构之一,斥巨资帮助全校师生实现…

数字图像处理实验三图像增强

一、实验目的 (1)了解图像增强的目的及意义,加深对图像增强的 感性认识,巩固所学的图像增强的理论知识和相 关算法。 (2)熟练掌握直方图均衡化和直方图规定化的计算过 程。 (3)熟…

matplotlib与seaborn的一些使用

1.plt.plot画线画点 a np.array([[1, 2], [3, 4]]) print(a[:, 0]) plt.plot(a[:, 0], a[:, 1]) plt.show() plt.plot(a[:, 0], a[:, 1], o,colorred) plt.show()#添加风格 plt.plot(x,y,colorred,linewidth1.0,linestyle--) #设置x轴范围 plt.xlim((-1,2)) # …

无人驾驶汽车想要“普渡众生”,还要经历15个磨难

来源:Forbes 、网易智能摘要:无人驾驶汽车的未来与电动平衡车的历史有什么关系吗?电动平衡车也曾被预言将彻底改变交通。史蒂夫•乔布斯曾经说,城市将围绕这一设备重新设计;约翰•杜尔说,它将比互联网更大…

SQL的各种使用方法

一、Select语句例子 使用子查询查询employees表中,属于某一部门员工的姓名、职位、工薪、部门编号的信息 提示: 1)、需要关联employees表、departments表 2)、已知的信息为部门名称,部门名称由用户自己给出 按照要求写出SQL语句。 答案及…

正常矩形计算IOU与与NMS,多边形计算IOU

一.计算IOU def intersect(box_a, box_b):max_xy np.minimum(box_a[:, 2:], box_b[2:])min_xy np.maximum(box_a[:, :2], box_b[:2])inter np.clip((max_xy - min_xy), a_min0, a_maxnp.inf)return inter[:, 0] * inter[:, 1]def jaccard_numpy(box_a, box_b):&…

产业互联网受瞩目:互联网主战场从To C转向To B | 企鹅经济学

来源:科技日报摘要:最近,要论在互联网圈最火的词,非“产业互联网”莫属。如今,言必提产业互联网,已成为互联网圈的一种风潮。互联网的“上半场”已接近尾声,“下半场”的序幕正被拉开&#xff0…

json的用法

json格式 JSON格式:http://www.json.org/ python和JSON的关系请参考:http://docs.python.org/library/json.html JSON建构有两种结构: 1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中&#…

数据库设计方法

一、延续训练题 假设你是一个小的录影带出租店的老板。你的出租店里面有3000部电影。每部电影都有DVD或VHS录像带号码。对于每部电影,需要知道它的标题和类别(如,喜剧,悬疑,剧情,动作,战争&…

谷歌首席科学家:搞研究的痛苦,搞工程的人不懂

来源:量子位作者:Vincent Vanhoucke谷歌首席科学家、谷歌大脑技术负责人Vincent Vanhoucke(万努克)最近发出的一篇“劝退文”,引发海外科研学者的热议。在这博客中,万努克直言以研究为业,固然令…

L1/L2/smooth_l1_loss/center_loss+Dice Loss+focal loss+各种IOU loss+kl散度

一.L1/L2/smooth_l1_loss/center_loss公式与代码 1.公式 L2公式: smooth_L1公式: 2.三种函数numpy代码实现 import numpy as np import matplotlib.pyplot as plt#y |x| def L1():x np.arange(-2, 2, 0.01)y abs(x)plt.figure()plt.plot(x, y, …

虚拟机中Linux安装Tools

1. 插入光盘后将文件拷贝到常用放置软件的目录 2. 解压文件 3. 然后进入解压后的文件夹里找到安装文件进行安装(注意使用root权限安装) 4. 安装时也是一个交互的过程 5. 完成安装 转载于:https://www.cnblogs.com/ywj2013/p/3578931.html

世界创新竞争力发展报告:中美日创新产出竞争力居前三

来源:皮书说11月21日,由福建师范大学、中国科学技术交流中心联合攻关,具体由全国经济综合竞争力研究中心福建师范大学分中心组织研究的《世界创新竞争力黄皮书:世界创新竞争力发展报告(2011~2017&#xff0…

二分法查找+树

一,查找存在的一个数,该数在列表中唯一 二分法查找是针对有序数据的查找方法,时间复杂度是O(logn)。。 其中 n/2^k1 时,k 的值就是总共缩小的次数。而每一次缩小操作只涉及两个数据的大小比较,所以, 经过了…

Oracle 软件的安装

1、在oracle主页上注册登录 2、下载64位,将我接受许可协议,下载1of2和2of2,并解压到同一个文件夹 3、安装oracle软件 双击database文件夹里面的setup.exe,启动OUI去掉:我希望通过....只安装软件,不创建数据库选择语言…

算法笔试题

一,搜索连通域 M, N list(map(int, input().split(,))) print(M,N) book [] for i in range(M):line list(map(int, input().split(,)))book.append(line) print(book) # MN3 # book[[1, 0, 0], [0, 1, 0], [0, 1, 1]] print(book,book) class Solution:def __i…

Linux之vim编辑器

目录 vim编辑器 vim编辑器指令 命令模式指令 光标相关 移动光标相关 文本操作 底行模式指令 插入模式 vim配置 面试官:小伙子,你是用什么环境编写代码的? 小明:vs2019 面试官:小伙子,你是用什么环…

Verilog HDL设计实现m序列+选择器

设计m序列发生器,其特征方程为,输出数字序列信号m_sequence码速率为10Mbps;设计串行转并行电路,每4位m序列并行输出,先输入的串行数据位于并行输出数据的高位。设计测试程序,进行功能仿真,将Ver…

深度分享:世界顶级神经科学家王小勤教授CCL 2018主旨报告(PPT全文,经报告人同意发布)...

报告人:王小勤 清华大学脑与智能实验室主任来源:TsinghuaNLP公众号人类的语言处理系统起始于听觉系统,大脑通过听觉系统来感知自然界多姿多彩的声学环境。在我们日常听见的众多声音中,语音和音乐是我们人类相互交流最为重要的两类…