在Python中,计算距离的方法取决于您想计算的是哪种类型的距离。以下是几种常见距离的计算方法:
曼哈顿距离(Manhattan Distance)
曼哈顿距离是两点在标准坐标系上的绝对轴距总和。
```python
import numpy as np
from scipy.spatial import distance
A = np.array([1,2,3])
B = np.array([4,5,6])
方法一:直接构造公式计算
dist1 = np.sum(np.abs(A-B))
方法二:内置线性代数函数计算
dist2 = np.linalg.norm(A-B, ord=1)
方法三:scipy库计算
dist3 = distance.cityblock(A,B)
欧式距离(Euclidean Distance)
欧式距离是两点间的直线距离,计算方式是将两点各个坐标分量的差值的平方相加后开平方。
```python
import math
def euclidean_distance(x1, y1, x2, y2):
return math.sqrt((x2 - x1)2 + (y2 - y1)2)
示例
x1, y1 = 1, 2
x2, y2 = 4, 6
print(euclidean_distance(x1, y1, x2, y2)) 输出:5.0
切比雪夫距离(Chebyshev Distance)
切比雪夫距离是两点间在各个坐标上的最大差值。
```python
def chebyshev_distance(x1, y1, x2, y2):
return max(abs(x2 - x1), abs(y2 - y1))
示例
x1, y1 = 1, 2
x2, y2 = 4, 6
print(chebyshev_distance(x1, y1, x2, y2)) 输出:5
闵可夫斯基距离(Minkowski Distance)
闵可夫斯基距离是曼哈顿距离和欧式距离的泛化形式,由参数p决定。
```python
def minkowski_distance(x1, y1, x2, y2, p=2):
return (abs(x2 - x1)p + abs(y2 - y1)p)0.5
示例
x1, y1 = 1, 2
x2, y2 = 4, 6
print(minkowski_distance(x1, y1, x2, y2, p=2)) 输出:5.0
汉明距离(Hamming Distance)
汉明距离是用于比较两个等长字符串的差异,即位置不同的字符个数。
余弦距离(Cosine Distance)
余弦距离用于计算两个向量之间的夹角余弦值,常用于文本相似度计算。
编辑距离(Edit Distance)
编辑距离用于计算两个字符串之间的编辑操作(插入、删除、替换)的最小次数。
```python
def edit_distance(s1, s2):
动态规划实现编辑距离
m, n = len(s1), len(s2)
dp = [[0 for _ in range(n+1)] for _ in range(m+1)]
for i in range(m+1):
for j in range(n+1):
if i == 0:
dp[i][j] = j
elif j == 0:
dp[i][j] = i
elif s1[i-1] == s2[j-1]:
dp[i][j] = dp[i-1][j-1]
else:
dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])
return dp[m][n]
示例
s1 = "kitten"
s2 = "sitting"
print(edit_distance(s1, s2)) 输出:3
以上是几种常见的距离计算方法及其在Python中的实现。您可以根据需要选择合适的计算方法来计算距离