我有两个numpy数组:
数组1:500,000行x100列
数组2:160,000行x100列
我想要找到每一行在数组1中与数组2之间的最大余弦相似度。换句话说,我计算数组1中第一行与数组2中所有行之间的余弦相似度,并找到最大的余弦相似度,然后计算数组1中第二行与数组2中所有行之间的余弦相似度,并找到最大的余弦相似度;对于数组1的其余部分也是如此。
我目前使用sklearn的cosine_similarity()函数并执行以下操作,但速度非常慢。我想知道是否有更快的方法来完成我想做的事情,而不涉及多进程/多线程。此外,我拥有的数组不是稀疏的。
数组1:500,000行x100列
数组2:160,000行x100列
我想要找到每一行在数组1中与数组2之间的最大余弦相似度。换句话说,我计算数组1中第一行与数组2中所有行之间的余弦相似度,并找到最大的余弦相似度,然后计算数组1中第二行与数组2中所有行之间的余弦相似度,并找到最大的余弦相似度;对于数组1的其余部分也是如此。
我目前使用sklearn的cosine_similarity()函数并执行以下操作,但速度非常慢。我想知道是否有更快的方法来完成我想做的事情,而不涉及多进程/多线程。此外,我拥有的数组不是稀疏的。
from sklearn.metrics.pairwise import cosine_similarity as cosine
results = []
for i in range(Array1.shape[0]):
results.append(numpy.max(cosine(Array1[None,i,:], Array2)))
cosine_similarity
。 - Denziloe