【发布时间】:2011-06-20 14:57:03
【问题描述】:
我有一个N x D 维特征,我需要根据它们与1 x D 维向量的距离对其进行排名。有什么快速的方法可以在 python 中实现而不递归应用argmin?
谢谢!
【问题讨论】:
我有一个N x D 维特征,我需要根据它们与1 x D 维向量的距离对其进行排名。有什么快速的方法可以在 python 中实现而不递归应用argmin?
谢谢!
【问题讨论】:
真正简单的是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。
【讨论】:
Python 中,索引从0 开始,因此在这种情况下argsort(.) 将提供您正在寻找的内容,例如((F- t)** 2).sum(1).argsort()。谢谢