python如何求任意两个对象的欧几里得距离和曼哈顿距离
时间: 2024-09-09 08:05:24 浏览: 69
在python Numpy中求向量和矩阵的范数实例
在Python中,我们可以使用内置的`math`模块计算两个向量的欧几里得距离,以及`numpy`库计算曼哈顿距离。以下是两种距离的计算方法:
**1. 欧几里得距离 (Euclidean Distance)**
欧几里得距离是基于每个维度上数值的平方差的平方根。如果你有两个列表表示二维坐标点 `p1 = [x1, y1]` 和 `p2 = [x2, y2]`,你可以这样做:
```python
import math
def euclidean_distance(p1, p2):
return math.sqrt(sum((a - b) ** 2 for a, b in zip(p1, p2)))
# 示例
p1 = [1, 2]
p2 = [4, 6]
distance_euclidean = euclidean_distance(p1, p2)
```
**2. 曼哈顿距离 (Manhattan Distance or Taxicab Distance)**
曼哈顿距离是沿着网格线的直线距离,对于每个维度的值直接取绝对值然后相加。同样使用两个点 `p1` 和 `p2` 计算:
```python
def manhattan_distance(p1, p2):
return sum(abs(a - b) for a, b in zip(p1, p2))
# 示例
distance_manhattan = manhattan_distance(p1, p2)
```
阅读全文