给出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的值生成距离函数。如果任何人都可以建议做某些方法。
答案 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)
您可以使用operator
和map
内置模块轻松完成,更多 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调用不是必需的,但会保存数学库的导入。