首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的多维欧几里德距离

Python中的多维欧几里德距离
EN

Stack Overflow用户
提问于 2012-02-23 22:13:45
回答 6查看 24.9K关注 0票数 20

我想计算两个数组在多维(24维)上的欧几里得距离。我用的是numpy-Scipy。

下面是我的代码:

代码语言:javascript
复制
import numpy,scipy;

A=numpy.array([116.629, 7192.6, 4535.66, 279714, 176404, 443608, 295522, 1.18399e+07, 7.74233e+06, 2.85839e+08, 2.30168e+08, 5.6919e+08, 168989, 7.48866e+06, 1.45261e+06, 7.49496e+07, 2.13295e+07, 3.74361e+08, 54.5, 3349.39, 262.614, 16175.8, 3693.79, 205865]);

B=numpy.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151246, 6795630, 4566625, 2.0355328e+08, 1.4250515e+08, 3.2699482e+08, 95635, 4470961, 589043, 29729866, 6124073, 222.3]);

但是,我使用scipy.spatial.distance.cdist(A[numpy.newaxis,:],B,'euclidean')来计算eucleidan距离。

,但它给了我一个错误

代码语言:javascript
复制
raise ValueError('XB must be a 2-dimensional array.');

我好像不太明白。

我查了一下scipy.spatial.distance.pdist,但不明白如何使用它?

有没有其他更好的方法呢?

EN

回答 6

Stack Overflow用户

发布于 2012-02-23 22:15:36

使用以下任一选项

代码语言:javascript
复制
numpy.sqrt(numpy.sum((A - B)**2))

或者更简单地说

代码语言:javascript
复制
numpy.linalg.norm(A - B)
票数 13
EN

Stack Overflow用户

发布于 2012-02-23 22:25:20

AB是24维空间中的2个点。您应该使用scipy.spatial.distance.euclidean

Doc here

代码语言:javascript
复制
scipy.spatial.distance.euclidean(A, B)
票数 8
EN

Stack Overflow用户

发布于 2019-01-15 18:46:43

启动Python 3.8后,您可以使用标准库的math模块及其新的dist函数,该函数返回两点之间的欧几里德距离(以坐标列表或坐标元组的形式给出):

代码语言:javascript
复制
from math import dist

dist([1, 0, 0], [0, 1, 0]) # 1.4142135623730951
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9414722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档