【发布时间】:2017-01-22 07:39:12
【问题描述】:
我有很多点X 和它们的函数值f 存储在numpy 数组中。我想在X 中找到在r 距离内没有更好点(较小的f 值)的所有点。
X 是数十万个点,所以我无法预先计算 sp.spatial.distance.pdist(X) 而是采用以下方法:
def cluster(X,f,r):
pts,n = np.shape(X)
centers = []
for i in range(0,pts):
pdist = sp.spatial.distance.cdist(X,[X[i]])
if not np.any(np.logical_and(pdist <= r, f < f[i])):
centers.append(i)
return centers
这需要几分钟。有没有办法根据邻近度和其他指标快速聚类?
【问题讨论】:
-
5.19 到 3.82 减少了 25%,这并不是说“没有那么快”。如果你能分摊分拣成本,那就更好了。
标签: python numpy scipy cluster-analysis