【问题标题】:Pairwise distance python (one base vector against many others)成对距离python(一个基向量与许多其他基向量)
【发布时间】:2016-11-11 11:25:37
【问题描述】:

我有一个基向量(由 1 和 0 组成),我想找到到 50,000 个其他向量(也由 1 和 0 组成)的余弦距离。我找到了很多方法来计算整个成对距离矩阵,但我对此不感兴趣。相反,我只想让我的基本向量与其他向量之间的 50,000 距离(然后排序以找到前 5 个)。我能做到这一点的最快方法是什么?

【问题讨论】:

  • 那么你是如何计算这个矩阵的?你为什么不只计算每个向量呢?

标签: python cosine-similarity


【解决方案1】:

矢量化操作与单独操作完全相同,只要您小心轴即可。在这里,我在每一行中都有单独的“其他”向量:

others = numpy.random.randint(0,2,(10,10))
base = numpy.random.randint(0,2,(10,1))
d = numpy.inner(base.T, others) / (numpy.linalg.norm(others, axis=0) * numpy.linalg.norm(base))

【讨论】:

  • 因此将有 50,000 个 10 长的向量...与 1 个 10 长的向量。当我尝试这个时,我会遇到对齐/广播问题。你能说明“其他人”如何变长吗?
猜你喜欢
  • 1970-01-01
  • 2022-06-16
  • 2012-01-03
  • 2015-06-05
  • 2020-09-03
  • 2016-09-19
  • 1970-01-01
  • 2017-03-28
  • 2010-11-26
相关资源
最近更新 更多