用python计算两个向量的闵可夫斯基距离
时间: 2023-09-03 20:15:31 浏览: 219
python闵可夫斯基距离.docx
闵可夫斯基距离是指在n维空间中,两个点之间的距离,定义为:
$$(\sum_{i=1}^{n} |x_i - y_i|^p)^{\frac{1}{p}}$$
其中p为距离的阶数,可以取不同的值,当p=1时,就是曼哈顿距离;当p=2时,就是欧几里得距离;当p趋近于无穷大时,就是切比雪夫距离。
下面是计算两个向量的闵可夫斯基距离的Python代码:
```python
import numpy as np
def minkowski_distance(x, y, p=2):
"""
计算两个向量的闵可夫斯基距离
:param x: 向量x
:param y: 向量y
:param p: 距离的阶数,默认为2
:return: 闵可夫斯基距离
"""
x = np.array(x)
y = np.array(y)
distance = np.power(np.sum(np.power(np.abs(x - y), p)), 1/p)
return distance
# 示例
x = [1, 2, 3]
y = [4, 5, 6]
print(minkowski_distance(x, y, 1)) # 曼哈顿距离
print(minkowski_distance(x, y, 2)) # 欧几里得距离
print(minkowski_distance(x, y, 3)) # 三阶距离
```
输出结果为:
```
9.0
5.19615242271
4.32674871092
```
其中,第一个参数x和第二个参数y分别为两个向量,第三个参数p为距离的阶数,可以根据需要进行修改。
阅读全文