python表示圆周率的方法:
使用"import"语句导入math包."math.pi"函数可以获取到圆周率,那么就可以用"math.pi"函数来表示圆周率
示例如下:
执行结果如下:
更多Python知识,请关注:Python自学网!!
在很多算法中都会涉及到求向量欧式距离,例如机器学习中的KNN算法,就需要对由训练集A和测试集B中的向量组成的所有有序对(Ai,Bi),求出Ai和Bi的欧式距离.这样的话就会带来一个二重的嵌套循环,在向量集很大时效率不高.
这里介绍如何将这一过程用矩阵运算实现.
假设有两个三维向量集,用矩阵表示:
要求A,B两个集合中的元素两两间欧氏距离.
先求出ABT:
然后:
将上面这个矩阵一开平方,就得到了A,B向量集两两间的欧式距离了.
下面是Python实现:
import numpy
def EuclideanDistances(A, B):
BT = B.transpose()
vecProd = A * BT
sumSqA = numpy.matrix(numpy.sum(SqA, axis=1))
sumSqAEx = numpy.tile(sumSqA.transpose(), (1, vecProd.shape[1]))
sumSqB = numpy.sum(SqB, axis=1)
sumSqBEx = numpy.tile(sumSqB, (vecProd.shape[0], 1))
return numpy.matrix(ED)
最直接的方式当然是用numpy.linalg.norm()来计算
参考:
这里想说的是axis参数问题:
axis为0的时候,对于二维矩阵是计算它的列向量的norm;
axis为1的时候,对于二维矩阵是计算它的行向量的norm.
这也很好理解,毕竟列是第一维,而行是第二维,故顺序如此.
另外还有一个ord参数,定义的是计算什么norm,参数列表如下:
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的坐标:')
t1=eval('[%s]'%t1)
print('点t1:',T1.x,T1.y,T1.z)
print("两点间的距离为:%s"%?s)
比如两个1D向量分别为a,b,则欧式距离可以表示为:
norm(a-b), 相当于
以上就是土嘎嘎小编为大家整理的python欧式距离函数的简单介绍python欧式距离函数的简单介绍相关咨询咨询主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!