python 欧氏距离_python - 如何用NumPy计算欧氏距离?

我想用各种性能说明来阐述简单的答案。 np.linalg.norm可能比您需要的更多:

dist=numpy.linalg.norm(a-b)

首先 - 此功能旨在处理列表并返回所有值,例如 比较中距离things到点数sqrt的距离:

sP=set(points)pA=point

distances=np.linalg.norm(sP-pA,ord=2,axis=1.)# 'distances' is a list

记住几件事:

Python函数调用很昂贵。

[Regular] Python不会缓存名称查找。

所以

defdistance(pointA,pointB):dist=np.linalg.norm(pointA-pointB)returndist

并不像看起来那样无辜。

>>>dis.dis(distance)20LOAD_GLOBAL0(np)2LOAD_ATTR1(linalg)4LOAD_ATTR2(norm)6LOAD_FAST0(pointA)8LOAD_FAST1(pointB)10BINARY_SUBTRACT12CALL_FUNCTION114STORE_FAST2(dist)316LOAD_FAST2(dist)18RETURN_VALUE

首先 - 每次调用它时,我们必须对“np”进行全局查找,对“linalg”进行范围查找,对“norm”进行范围查找,仅调用函数的开销可以等同于几十个python说明。

最后,我们浪费了两个操作来存储结果并重新加载它以便返回...

第一步改进:使查找更快,跳过商店

defdistance(pointA,pointB,_norm&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值