【问题标题】:Finding the closest point(s) by ranking them通过排名找到最近的点
【发布时间】:2011-06-20 14:57:03
【问题描述】:

我有一个N x D 维特征,我需要根据它们与1 x D 维向量的距离对其进行排名。有什么快速的方法可以在 python 中实现而不递归应用argmin

谢谢!

【问题讨论】:

标签: python numpy scipy


【解决方案1】:

真正简单的是Squared Euclidean Distance,它的实现是这样的:

In []: F= randn(5, 3)
In []: t= randn(1, 3)
In []: ((F- t)** 2).sum(1)
Out[]: array([  8.80512,   4.61693,   2.6002,   3.3293,  12.41800])

其中F 是特征,t 是目标向量。因此排名将是:

In []: ((F- t)** 2).sum(1).argsort()
Out[]: array([2, 3, 1, 0, 4])

但是,如果您能够就您的案例进行更多描述,则可能存在更合适的措施,例如 Mahalanobis distance

【讨论】:

  • @unutbu:显然你编辑了,但我看不出有什么不同。那 29 个被删除的字符是什么?谢谢
  • 根据每个点与 t 的接近程度,我预计矩阵的范围为 1 到 5。这不是我想要的。
  • @eat:对不起,我应该把我所做的事情记录下来。链接(类似于:en.wikipedia.org/wiki/http://en.wikipedia.org/wiki/…)已损坏。
  • @Abdalrahman Eweiwi:在Python 中,索引从0 开始,因此在这种情况下argsort(.) 将提供您正在寻找的内容,例如((F- t)** 2).sum(1).argsort()。谢谢
  • @Abdalrahman Eweiwi:你觉得我的回答有用吗?如果没有,请考虑详细说明您的情况,因为 AFAIUIC 我的回答提供了您正在寻找的排名。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多