有效计算向量形状 (768,) 和矩阵 (n, 768) 之间的余弦相似度

efficiently calculate cosine similarity between vector shape (768,) and matrix (n, 768)

我有以下目标嵌入向量 u 形状 (768,) 和目标嵌入矩阵 v 形状 (23, 768)。我需要计算目标向量和矩阵之间的余弦相似度。我知道如何循环:

from sklearn.metrics.pairwise import cosine_similarity

for i in v:
   cosine_similarity(u.reshape(-1, 1), i.reshape(-1,1))[0][0]

但是如何像 numpy 那样做呢?我的目标是拥有像

这样的余弦相似性数组
array[0.4, 0.5, 0.6, ... n]
import numpy as np

np.random.seed(1)
u = np.random.random(768)
v = np.random.random((23,768))
w = np.array([u.dot(v[i])/(np.linalg.norm(u)*np.linalg.norm(v[i])) for i in range(23)])
print(w)