📅  最后修改于: 2023-12-03 15:34:27.379000             🧑  作者: Mango
闵可夫斯基距离是一种衡量两个向量之间距离的方法,其公式如下:
其中,p为一个正整数,x、y为两个向量。
Python中可以使用scipy库中的distance
模块来计算闵可夫斯基距离。该模块提供了minkowski
函数,其用法如下:
from scipy.spatial.distance import minkowski
x = [1, 2, 3]
y = [4, 5, 6]
# 计算p为2的闵可夫斯基距离
p = 2
distance_2 = minkowski(x, y, p)
print(distance_2)
# 计算p为3的闵可夫斯基距离
p = 3
distance_3 = minkowski(x, y, p)
print(distance_3)
上述代码中,我们以p为2和p为3分别计算了向量x和向量y之间的闵可夫斯基距离,并将结果输出。运行结果如下:
5.196152422706632
4.3267487109222245
在实际应用中,p通常取值为1或2。当p取值为1时,闵可夫斯基距离等同于曼哈顿距离;当p取值为2时,闵可夫斯基距离等同于欧几里得距离。
下面的代码演示了如何计算曼哈顿距离和欧几里得距离:
from scipy.spatial.distance import cityblock, euclidean
x = [1, 2, 3]
y = [4, 5, 6]
# 计算曼哈顿距离
distance_manhattan = cityblock(x, y)
print(distance_manhattan)
# 计算欧几里得距离
distance_euclidean = euclidean(x, y)
print(distance_euclidean)
运行结果如下:
9
5.196152422706632