如何用 python 计算曼哈顿距离(附示例)
两个向量A和B之间的曼哈顿距离计算如下:
Σ|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 中计算马氏距离