📜  在 python 中计算距离(1)

📅  最后修改于: 2023-12-03 14:51:06.542000             🧑  作者: Mango

在 Python 中计算距离

距离计算是计算机科学和数据科学领域中很常见的一个问题。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 中计算距离的几种方法,欧几里得距离、曼哈顿距离和闵可夫斯基距离分别适用于不同的场景,开发者可以根据自己的需求选择不同的计算方法。