在Python中获取X和Y的欧几里得距离[重复]

Posted

技术标签:

【中文标题】在Python中获取X和Y的欧几里得距离[重复]【英文标题】:Getting the Euclidean distance of X and Y in Python [duplicate] 【发布时间】:2020-11-28 21:35:51 【问题描述】:

我对 python 还很陌生,所以我希望有人可以帮助我。我们有两个数组 X 和 Y

X=np.array([[ 5.43840675, -1.05259078, -0.21793506,  8.56686818, -2.58056957,
        -0.07310339, -0.31181501,  0.02696586],
       [ 5.72318296, -0.99665473, -0.14540062,  8.32051008, -3.36201189,
        -0.04897565, -0.34271698, -0.0339766 ]])

Y=np.array([[ 5.72318296, -0.99665473, -0.14540062,  8.32051008, -3.36201189,
        -0.04897565, -0.34271698, -0.0339766 ],
       [ 5.43840675, -1.05259078, -0.21793506,  8.56686818, -2.58056957,
        -0.07310339, -0.31181501,  0.02696586]])

我对计算两个 numpy 数组(X 和 Y)的欧几里得距离很感兴趣。例如 X[1], Y[0] 之间的距离 应该为零,因为这些向量之间没有区别。

X[1]=[ 5.72318296, -0.99665473, -0.14540062,  8.32051008, -3.36201189, -0.04897565, -0.34271698, -0.0339766 ] is equal to 
Y[0]=[ 5.72318296, -0.99665473, -0.14540062,  8.32051008, -3.36201189, -0.04897565, -0.34271698, -0.0339766 ]

我需要让这个想法发挥作用,所以如果有人能告诉我我需要做什么才能让这个想法发挥作用,我将不胜感激。

【问题讨论】:

欧几里得距离的计算有一个非常清晰的公式。你尝试了什么? 这对您有帮助吗? reference @DeepSpace 清除公式没有帮助,因为我在数组中有向量 @MisterNox 谢谢你,但这无济于事 【参考方案1】:

基于Euclidean distance 公式:

import math
x = [ 5.72318296, -0.99665473, -0.14540062,  8.32051008, -3.36201189, -0.04897565, -0.34271698, -0.0339766 ]
y = [ 5.72318296, -0.99665473, -0.14540062,  8.32051008, -3.36201189, -0.04897565, -0.34271698, -0.0339766 ]
Index = 0
sum = 0
while Index < len(x):
    sum += (x[Index] - y[Index]) ** 2
    Index += 1
print(math.sqrt(sum))

【讨论】:

谢谢,但这不是我想要的,我有一个数组而不是简单数组中的向量!!!!!!!!!!!! @pooya 只需将此代码包装在一个函数中,然后为每对向量调用它。

以上是关于在Python中获取X和Y的欧几里得距离[重复]的主要内容,如果未能解决你的问题,请参考以下文章

求逆元的四种算法(拓欧费马小线性推欧拉)

同余方程(扩欧模板)

在Python中使用欧几里得距离确定最近的位置

拓展欧几里得算法

[数论] 逆元(附扩欧证明)

wenbao与欧几里得及线性同余方程