如何用 python 计算曼哈顿距离(附示例)


两个向量AB之间的曼哈顿距离计算如下:

Σ|A i – B i |

其中i是每个向量的第 i元素。

该距离用于衡量两个向量之间的差异,常用于许多机器学习算法中。

本教程展示了在 Python 中计算两个向量之间的曼哈顿距离的两种方法。

方法一:编写自定义函数

以下代码显示如何创建自定义函数来计算 Python 中两个向量之间的曼哈顿距离:

 from math import sqrt

#create function to calculate Manhattan distance 
def manhattan(a, b):
    return sum ( abs (val1-val2) for val1, val2 in zip (a,b))
 
#definevectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]

#calculate Manhattan distance between vectors
manhattan(A,B)

9

这两个向量之间的曼哈顿距离为9

我们可以通过手动快速计算到曼哈顿的距离来确认这是正确的:

Σ|A i – B i | =|2-5| + |4-5| + |4-7| + |6-8| = 3 + 1 + 3 + 2 = 9

方法2:使用cityblock()函数

计算两个向量之间的曼哈顿距离的另一种方法是使用 SciPy 包中的cityblock()函数:

 from scipy. spatial . distance import cityblock

#definevectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]

#calculate Manhattan distance between vectors
cityblock(A, B)

9

这两个向量之间的曼哈顿距离再次变为9

请注意,我们还可以使用此函数来查找 pandas DataFrame 中两列之间的曼哈顿距离:

 from scipy. spatial . distance import cityblock
import pandas as pd

#define DataFrame
df = pd. DataFrame ({' A ': [2, 4, 4, 6],
                   ' B ': [5, 5, 7, 8],
                   ' C ': [9, 12, 12, 13]})

#calculate Manhattan distance between columns A and B
cityblock(df. A , df. B )

9

其他资源

如何在Python中计算欧几里得距离
如何在 Python 中计算汉明距离
如何在Python中计算编辑距离
如何在 Python 中计算马氏距离

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注