python 距离算法
时间: 2025-01-04 16:27:48 浏览: 9
### Python 中的距离计算算法及其实现
#### 欧几里得距离 (Euclidean Distance)
欧几里得距离是最常用的距离度量方法之一,用于衡量两个点之间的直线距离。
```python
import math
def euclidean_distance(point1, point2):
return math.sqrt(sum((p1 - p2)**2 for p1, p2 in zip(point1, point2)))
```
此函数接受两个坐标列表作为输入参数并返回它们之间基于欧氏公式的距离[^1]。
#### 曼哈顿距离 (Manhattan Distance)
曼哈顿距离也称为城市街区距离或L1范数,在网格状结构上测量两点间沿轴方向移动所需的最小步数总和。
```python
def manhattan_distance(point1, point2):
return sum(abs(p1 - p2) for p1, p2 in zip(point1, point2))
```
该定义适用于二维空间中的任意两点,并通过绝对差值之和来表示两者间的分离程度。
#### 切比雪夫距离 (Chebyshev Distance)
切比雪夫距离又叫棋盘距离,它是指各坐标数值差异的最大绝对值。
```python
def chebyshev_distance(point1, point2):
return max(abs(p1 - p2) for p1, p2 in zip(point1, point2))
```
这种类型的测距方式特别适合于那些允许斜向行走的情况下的最短路径分析。
#### 余弦相似度 (Cosine Similarity)
虽然严格来说不是一种“距离”,但是经常被用来比较文档或其他高维数据集内的对象之间的角度差距。其取值范围通常是从-1到+1,其中正值意味着正相关而负值则代表反相位关系;当结果接近零时表示几乎不相关。
```python
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
vector1 = np.array([point1]).reshape(1, -1)
vector2 = np.array([point2]).reshape(1, -1)
cos_sim = cosine_similarity(vector1, vector2)[0][0]
# Convert similarity to distance by subtracting from 1
cos_dist = 1 - cos_sim
```
上述代码片段展示了如何利用 `sklearn` 库快速简便地完成这一操作。
阅读全文