📜  Python中的闵可夫斯基距离(1)

📅  最后修改于: 2023-12-03 15:34:27.379000             🧑  作者: Mango

Python中的闵可夫斯基距离

闵可夫斯基距离是一种衡量两个向量之间距离的方法,其公式如下:

闵可夫斯基距离公式

其中,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