【发布时间】:2011-07-04 10:16:32
【问题描述】:
我有一个 n 维点的集合,我想找出最接近的 2 个。我能想到的最好的二维是:
from numpy import *
myArr = array( [[1, 2],
[3, 4],
[5, 6],
[7, 8]] )
n = myArr.shape[0]
cross = [[sum( ( myArr[i] - myArr[j] ) ** 2 ), i, j]
for i in xrange( n )
for j in xrange( n )
if i != j
]
print min( cross )
给了
[8, 0, 1]
但这对于大型数组来说太慢了。我可以对其应用什么样的优化?
相关:
Euclidean distance between points in two different Numpy arrays, not within
【问题讨论】:
-
@Ηλίας:你大概有多少分?请注意,可能有超过 2 个点(甚至所有点)的集合具有相同的距离(但不准确的计算可能无法反映这一点,因此最终您需要能够设置阈值 trh,其中距离差低于 trh 是认为相等)。您不想找出离给定点最近的点吗?
-
@eat 这是我正在构建的层次结构集群,我需要找到两个最近的质心。通常少于一千点,但我需要看看它可以扩展多少。在我的情况下,舍入错误不会那么重要。
标签: python algorithm numpy nearest-neighbor euclidean-distance