要生成距离函数?

时间:2014-09-18 08:41:41

标签: python polynomial-math

给出X和Y的值 其中X是加载,Y是运行时

X =[0.1, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15]

Y =[139, 130, 141, 142, 145, 146, 146, 147, 147, 149, 150, 152, 152, 152, 154, 155, 165, 169, 175, 211, 224]

我尝试使用他们的差异,但没有工作

D = abs(X[0]-Y[0])

我需要根据X和Y的值生成距离函数。如果任何人都可以建议做某些方法。

4 个答案:

答案 0 :(得分:0)

您可以使用为n维定义的Eucleidian距离:

D=sqrt(Sum(xi-yi)*2)

对于您的情况将是:

Dxy=sqrt((0.1-139)*2+....+(0.15-224)*2)

答案 1 :(得分:0)

试试这个:

import math     
sum = 0
for i in range(0, len(X)):
    sum += pow(abs(X[i] - Y[i]), 2)
D = sqrt(sum)

答案 2 :(得分:0)

您可以使用operatormap内置模块轻松完成,更多 pythonic

map(operator.sub, X,Y)

演示:

>>> X =[0.1, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15]
>>> 
>>> Y =[139, 130, 141, 142, 145, 146, 146, 147, 147, 149, 150, 152, 152, 152, 154, 155, 165, 169, 175, 211, 224]
>>> new_list=map(operator.sub, X,Y)
>>> new_list
[-138.9, -129.85, -140.85, -141.85, -144.85, -145.85, -145.85, -146.85, -146.85, -148.85, -149.85, -151.85, -151.85, -151.85, -153.85, -154.85, -164.85, -168.85, -174.85, -210.85, -223.85]
>>> 

答案 3 :(得分:0)

为什么不使用numpy?

import numpy 
X = asarray(X)
Y = asarray(Y)
dist = np.sqrt(np.sum((X-Y)**2))

np.sqrt调用不是必需的,但会保存数学库的导入。