我有一个形状为
我的初始想法是使用
下面是一个人造例子:
以下是我想要计算1D数组相似度的方法:
我该如何将这个方法推广到将
(300, )
的一维数组和一个形状为(400, 300)
的二维数组。现在,我想计算这个二维数组中每一行与一维数组之间的余弦相似度。因此,我的结果应该是形状为(400, )
的数组,表示这些向量的相似程度。我的初始想法是使用
for
循环遍历2D数组中的行,并计算向量之间的余弦相似度。是否有更快速的广播方法来代替循环?下面是一个人造例子:
In [29]: vec = np.random.randn(300,)
In [30]: arr = np.random.randn(400, 300)
以下是我想要计算1D数组相似度的方法:
inn = (vec * arr[0]).sum()
vecnorm = numpy.sqrt((vec * vec).sum())
rownorm = numpy.sqrt((arr[0] * arr[0]).sum())
similarity_score = inn / vecnorm / rownorm
我该如何将这个方法推广到将
arr[0]
替换为二维数组的情况?