python计算n维欧氏距离
时间: 2023-06-30 17:06:28 浏览: 202
计算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维空间中两个点之间的距离,计算公式为:
$$d(x,y)=\sqrt{\sum_{i=1}^{n}(x_i-y_i)^2}$$
其中,x和y是n维向量,$x_i$和$y_i$分别表示向量x和y中的第i个元素。
以下是Python代码实现欧氏距离的计算:
```python
import math
def euclidean_distance(x, y):
# 计算欧氏距离
distance = 0.0
for i in range(len(x)):
distance += math.pow(x[i] - y[i], 2)
return math.sqrt(distance)
```
调用这个函数可以计算两个向量之间的欧氏距离,例如:
```python
x = [1, 2, 3]
y = [4, 5, 6]
distance = euclidean_distance(x, y)
print(distance) # 输出:5.196152422706632
```
计算一个矩阵行之间的欧氏距离
假设有一个 $m \times n$ 的矩阵 $A$,其中每一行表示一个向量,我们可以计算每一行之间的欧氏距离。
具体做法是,先将每一行向量转置成列向量,然后计算列向量之间的欧氏距离。可以使用 numpy 库来实现:
```python
import numpy as np
def euclidean_distance_matrix(A):
"""
计算矩阵行之间的欧氏距离矩阵
参数:
A: np.array, shape=(m, n)
返回值:
D: np.array, shape=(m, m)
"""
# 转置矩阵,使每一列代表一个向量
AT = A.T
# 计算列向量之间的欧氏距离
D = np.sqrt(((AT[:, np.newaxis, :] - AT[np.newaxis, :, :])**2).sum(axis=-1))
return D
```
其中,`np.newaxis` 可以将原来的一维数组(向量)扩展为二维数组(矩阵),方便进行矩阵计算。
阅读全文