📅  最后修改于: 2023-12-03 14:51:06.542000             🧑  作者: Mango
距离计算是计算机科学和数据科学领域中很常见的一个问题。Python 提供了许多方法来计算不同类型的距离。本文将介绍在 Python 中计算欧几里得距离、曼哈顿距离和闵可夫斯基距离的方法。
欧几里得距离又称为欧几里得度量,是空间中两点间的真实距离。在二维平面中,欧几里得距离公式如下:
$$ d_{AB} = \sqrt{(x_B - x_A)^2 + (y_B - y_A)^2} $$
在 Python 中,可以使用 NumPy 库计算欧几里得距离,如下所示:
import numpy as np
A = [1, 2]
B = [4, 5]
euclidean_distance = np.linalg.norm(np.array(A) - np.array(B))
print(euclidean_distance)
输出结果为:
4.242640687119285
其中,np.linalg.norm
函数可以计算向量的范数,即欧几里得距离。
曼哈顿距离又称为城市街区距离,是在城市中行车的真实距离。在二维平面中,曼哈顿距离公式如下:
$$ d_{AB} = |x_B - x_A| + |y_B - y_A| $$
在 Python 中,可以直接使用 Python 内置函数计算曼哈顿距离,如下所示:
A = [1, 2]
B = [4, 5]
manhattan_distance = abs(A[0] - B[0]) + abs(A[1] - B[1])
print(manhattan_distance)
输出结果为:
6
闵可夫斯基距离是欧几里得距离和曼哈顿距离的一般化。在二维平面中,闵可夫斯基距离公式如下:
$$ d_{AB} = (|x_B - x_A|^p + |y_B - y_A|^p)^{1/p} $$
其中,$p$ 是一个参数,当 $p = 1$ 时,就是曼哈顿距离;当 $p = 2$ 时,就是欧几里得距离。
在 Python 中,可以定义一个函数来计算闵可夫斯基距离,如下所示:
def minkowski_distance(A, B, p):
distance = 0
for i in range(len(A)):
distance += abs(A[i] - B[i]) ** p
distance = distance ** (1 / p)
return distance
A = [1, 2]
B = [4, 5]
minkowski_distance_1 = minkowski_distance(A, B, 1)
minkowski_distance_2 = minkowski_distance(A, B, 2)
print(minkowski_distance_1)
print(minkowski_distance_2)
输出结果为:
6.0
4.242640687119285
其中,minkowski_distance
函数可以计算闵可夫斯基距离。
以上就是在 Python 中计算距离的几种方法,欧几里得距离、曼哈顿距离和闵可夫斯基距离分别适用于不同的场景,开发者可以根据自己的需求选择不同的计算方法。