Python 两个向量之间的曼哈顿距离

Python 两个向量之间的曼哈顿距离,python,distance,heuristics,Python,Distance,Heuristics,我需要计算两个向量之间的曼哈顿距离 我找到了这个密码 但在另一份文档中,我找到了曼哈顿的代码 因此,这方面的代码是: def manhattan_distance(instance1, instance2): n = len(instance1)-1 sum = 0 # for each point, finding distance # to rest of the point for i in range(n): sum += ab

我需要计算两个向量之间的曼哈顿距离

我找到了这个密码

但在另一份文档中,我找到了曼哈顿的代码

因此,这方面的代码是:

def manhattan_distance(instance1, instance2):
    n = len(instance1)-1
    sum = 0
    # for each point, finding distance
    # to rest of the point
    for i in range(n):
        sum += abs(float(instance1[i]) - float(instance2[i]))
    return sum

曼哈顿距离的算法是什么在参考公式中,有n个点,每个点有2个坐标,计算一个向量到其他向量的距离。所以除了符号,两个公式都是一样的。两个向量之间的曼哈顿距离是它们坐标差的绝对值之和。记住它的一个简单方法是,向量到自身的距离必须为0。

这里有一个计算曼哈顿距离的示例

[1]中的
:%粘贴
将numpy作为np导入
def曼哈顿距离(a,b):
返回np.abs(a-b).sum()
a=np.array([1,2])
b=np.array([-1,4])
打印(曼哈顿距离(a,b))
##--结束粘贴的文本--
4.
如果处理的向量是字符串

[1]中的
:%粘贴
将numpy作为np导入
def曼哈顿距离(a,b):
返回np.abs(a-b).sum()
a=['1','2']
b=['-1',4']
打印(曼哈顿距离(np.array(a,dtype=float),np.array(b,dtype=float)))
##--结束粘贴的文本--
4

还有和
ord=1
。为什么
n=len(instance1)-1
??在我看来,没有理由从总和中省略最后一个分量!֍无论如何,你应该为x1写
manhattan=sum(abs(float(x2)-float(x1)),x2在zip中(instance1,instance2))
…除了OP似乎在处理strings@gboffi更新帖子,展示如何处理字符串数组
def manhattan_distance(instance1, instance2):
    n = len(instance1)-1
    sum = 0
    # for each point, finding distance
    # to rest of the point
    for i in range(n):
        sum += abs(float(instance1[i]) - float(instance2[i]))
    return sum