pythonN维向量求距离
时间: 2023-08-02 07:07:19 浏览: 42
在Python中,可以使用numpy库来进行N维向量的运算。假设有两个N维向量a和b,可以使用下面的代码求它们之间的距离。
```python
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
distance = np.linalg.norm(a - b)
print(distance)
```
这里使用了`numpy.linalg.norm()`函数来求两个向量之间的欧几里得距离。如果要求曼哈顿距离或切比雪夫距离等其他距离度量方式,则需要自己编写计算公式。
相关问题
python计算n维欧氏距离
计算n维欧氏距离可以使用以下代码:
```python
import math
def euclidean_distance(p1, p2):
# 计算p1和p2两点间的欧氏距离
# p1和p2是n维向量,可以是列表、元组等可迭代对象
# 返回一个浮点数
return math.sqrt(sum([(p1[i]-p2[i])**2 for i in range(len(p1))]))
# 示例
p1 = (1, 2, 3)
p2 = (4, 5, 6)
dist = euclidean_distance(p1, p2)
print(dist)
```
输出结果为:
```
5.196152422706632
```
以上代码可以计算任意维度的欧氏距离。
用python计算两个向量的闵可夫斯基距离
闵可夫斯基距离是指在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为距离的阶数,可以根据需要进行修改。