我有2个(n_samples, n_dimensions)
的ndarray,我想要每对相应的行,所以输出将是(n_samples, )
使用sklearn's implementation
我得到(n_samples, n_samples)
结果 - 这显然会造成很多不相关的计算,这在我的案例中是不可接受的。
使用1 - scipy's implementation
是不可能的,因为它需要向量而不是矩阵。
执行我正在寻找的内容的最有效方法是什么?
答案 0 :(得分:1)
假设两个数组select col1,
row_number() over (order by col1) as col2
from Hakuna_matata;
和x
具有相同的形状,
y
(reference)np.einsum
和x
y
还有一些要测试的代码;
def matrix_cosine(x, y):
return np.einsum('ij,ij->i', x, y) / (
np.linalg.norm(x, axis=1) * np.linalg.norm(y, axis=1)
)