参考链接:
参考博客1
参考博客2
推荐示例1
def euclidean_distance(matrix1, matrix2):distances = np.zeros((matrix1.shape[0], matrix2.shape[0]))d1 = np.sum(np.square(matrix1), axis=1, keepdims=True)d2 = np.sum(np.square(matrix2), axis=1)d3 = 2 * (matrix1 @ matrix2.T)distances = np.sqrt(d1 + d2 - d3)return distances
示例2
假设有两个N*3的矩阵A和B,其中A的每一行表示一个向量a,B的每一行表示一个向量b,那么可以计算每个向量之间的欧式距离。
具体计算步骤如下:
- 创建一个长度为N的数组,用于存储每个向量之间的欧式距离。
- 遍历矩阵A和B的每一行,计算对应向量之间的欧式距离。
- 对每个向量的三个元素进行逐一相减,然后平方。
- 将平方的结果进行求和。
- 对求和的结果进行开平方,得到对应向量之间的欧式距离。
- 将计算得到的欧式距离存储到数组中。
- 对数组中的欧式距离求和,得到两个矩阵之间的总的欧式距离。
以下是使用Python实现该计算的示例代码:
import numpy as npdef euclidean_distance(A, B):N = A.shape[0]distances = np.zeros(N)for i in range(N):distance = np.sqrt(np.sum((A[i] - B[i])**2))distances[i] = distancetotal_distance = np.sum(distances)return total_distance# 示例使用
A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[2, 3, 4], [5, 6, 7]])distance = euclidean_distance(A, B)
print(distance)
输出结果为:
4.242640687119285
这个示例中,A和B是两个2*3的矩阵,表示两个向量。计算得到的欧式距离为4.242640687119285。