资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

python欧式距离函数的简单介绍

python如何表示 圆周率

python表示圆周率的方法:

为渑池等地区用户提供了全套网页设计制作服务,及渑池网站建设行业解决方案。主营业务为做网站、网站设计、渑池网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

使用“import”语句导入math包。“math.pi”函数可以获取到圆周率,那么就可以用“math.pi”函数来表示圆周率

示例如下:

执行结果如下:

更多Python知识,请关注:Python自学网!!

python计算每两个向量之间的距离并保持到矩阵中

在很多算法中都会涉及到求向量欧式距离,例如机器学习中的KNN算法,就需要对由训练集A和测试集B中的向量组成的所有有序对(Ai,Bi),求出Ai和Bi的欧式距离。这样的话就会带来一个二重的嵌套循环,在向量集很大时效率不高。

这里介绍如何将这一过程用矩阵运算实现。

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

A=[a11a12a21a22a31a32]

B=⎡⎣⎢⎢b11b12b13b21b22b23b31b32b33⎤⎦⎥⎥

要求A,B两个集合中的元素两两间欧氏距离。

先求出ABT:

ABT=⎡⎣⎢⎢⎢⎢⎢∑k=13ak1bk1∑k=13ak2bk1∑k=13ak1bk2∑k=13ak2bk2∑k=13ak1bk3∑k=13ak2bk3⎤⎦⎥⎥⎥⎥⎥

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

Asq=⎡⎣⎢⎢⎢⎢⎢∑k=13(ak1)2∑k=13(ak2)2∑k=13(ak1)2∑k=13(ak2)2∑k=13(ak1)2∑k=13(ak2)2⎤⎦⎥⎥⎥⎥⎥

Bsq=⎡⎣⎢⎢⎢⎢⎢∑k=13(bk1)2∑k=13(bk1)2∑k=13(bk2)2∑k=13(bk2)2∑k=13(bk3)2∑k=13(bk3)2⎤⎦⎥⎥⎥⎥⎥

然后:

Asq+Bsq−2ABT=⎡⎣⎢⎢⎢⎢⎢∑k=13(ak1−bk1)2∑k=13(ak2−bk1)2∑k=13(ak1−bk2)2∑k=13(ak2−bk2)2∑k=13(ak1−bk3)2∑k=13(ak2−bk3)2⎤⎦⎥⎥⎥⎥⎥

将上面这个矩阵一开平方,就得到了A,B向量集两两间的欧式距离了。

下面是Python实现:

import numpy

def EuclideanDistances(A, B):

BT = B.transpose()

vecProd = A * BT

SqA = A.getA()**2

sumSqA = numpy.matrix(numpy.sum(SqA, axis=1))

sumSqAEx = numpy.tile(sumSqA.transpose(), (1, vecProd.shape[1]))

SqB = B.getA()**2

sumSqB = numpy.sum(SqB, axis=1)

sumSqBEx = numpy.tile(sumSqB, (vecProd.shape[0], 1))

SqED = sumSqBEx + sumSqAEx - 2*vecProd

ED = (SqED.getA())**0.5

return numpy.matrix(ED)

Python 计算三维空间某点距离原点的欧式距离

1、点击“开始”——“ArcGIS”——“ArcMap”,启动ArcMap程序,并添加两个点要素类到地图上。

2、点击“ArcToolbox”——“分析工具”——“邻域分析”——“点距离”,打开点距离工具界面。

3、选择输入要素,即作为起点的要素类,可以选择已添加到地图上的要素类,也可以选择外部要素类。

4、选择邻近要素,即作为终点的要素类,可以选择已添加到地图上的要素类,也可以选择外部要素类。

5、选择计算结果的存放位置和表名称。

6、输入搜索半径,即要计算多大半径范围内的邻近点要素之间的距离,可以为空,如果为空,则计算起点到邻近要素类中所有点要素之间的距离。点击“确定”,开始计算起点要素到邻近要素之间的距离。

7、计算完成后,计算结果表会自动添加到地图上,右键点击结果表,点击打开,可以查看计算结果。

Python (3) 如何计算欧式距离

最直接的方式当然是用numpy.linalg.norm()来计算

参考:

这里想说的是axis参数问题:

axis为0的时候,对于二维矩阵是计算它的列向量的norm;

axis为1的时候,对于二维矩阵是计算它的行向量的norm。

这也很好理解,毕竟列是第一维,而行是第二维,故顺序如此。

另外还有一个ord参数,定义的是计算什么norm,参数列表如下:

python中怎样定义一个函数来计算两点距离?

import math

class Dot:

def __init__(self,x,y,z):

self.x=float(x)

self.y=float(y)

self.z=float(z)   

t1=input('请输入点t1的坐标:')

t2=input('请输入点t2的坐标:')

t1=eval('[%s]'%t1)

t2=eval('[%s]'%t2)

T1=Dot(t1[0],t1[1],t1[2])

T2=Dot(t2[0],t2[1],t2[2])

print('点t1:',T1.x,T1.y,T1.z)

print('点t2:',T2.x,T2.y,T2.z)

s=math.sqrt((T1.x-T2.x)*(T1.x-T2.x)-(T1.y-T2.y)*(T1.y-T2.y)+(T1.z-T2.z)*(T1.z-T2.z))

print("两点间的距离为:%s"% s)

怎样用python计算两个向量的欧式距离

L2距离就是二范数,用norm试一下。

比如两个1D向量分别为a,b,则欧式距离可以表示为:

norm(a-b), 相当于

sqrt(sum((a-b).^2))


文章名称:python欧式距离函数的简单介绍
本文路径:http://cdkjz.cn/article/hedejd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220