使用 scipy 计算 "cosine" 指标的最快方法

Fastest way to calculate "cosine" metrics with scipy

我得到了一个由 1 和 0 组成的矩阵。我需要找到 20 行,它们对矩阵中的 1 specific 行具有最高的余弦指标:

如果我有 10 行,第 5 行称为 specific,我想选择其中的最大值:
cosine(1row,5row),cosine(2row,5row),...,cosine(8row,5row),cosine(9row,5row)

首先,我尝试计算指标。 这没有用:

A = ratings[:,100]
A = A.reshape(1,A.shape[0])
B = ratings.transpose()
similarity = -cosine(A,B)+1
A.shape = (1L, 71869L)
B.shape = (10000L, 71869L)

错误是:Input vector should be 1-D. 我想知道,如何在没有错误的情况下从美学上实现这一点,但最重要的是 - 哪个解决方案最快?

在我看来,最快的方法不是借助scipy实现的; 我们只需要获取 specific 行中的所有索引,然后查看所有其他行中的这些索引。那些具有最高重合度的行将具有最高矩阵。

有没有更快的方法?

最快的方法是使用矩阵运算:something like np.multipy(A,B)