我有两个矩阵,分别是2 x 4和3 x 4的。我想计算每行的欧几里得距离,最终得到一个2 x 3的矩阵。以下是使用一个for循环的代码,用于计算矩阵a中每个行向量与矩阵b中所有行向量的欧几里得距离。我如何在不使用for循环的情况下实现同样的功能?
import numpy as np
a = np.array([[1,1,1,1],[2,2,2,2]])
b = np.array([[1,2,3,4],[1,1,1,1],[1,2,1,9]])
dists = np.zeros((2, 3))
for i in range(2):
dists[i] = np.sqrt(np.sum(np.square(a[i] - b), axis=1))
回答:
只需在适当的位置使用np.newaxis
即可:
np.sqrt((np.square(a[:,np.newaxis]-b).sum(axis=2)))