我有3D numpy array作为PCA

pcar =[[xa ya za]
       [xb yb zb]
       [xc yc zc]
       .
       .
       [xn yn zn]]


其中每行是一个点,我从PCA上方选择了任意两个随机行作为群集

out_list=pcar[numpy.random.randint(0,pcar.shape[0],2)]


这给出了具有2行的numpy数组。

我必须找到距out_list的每一行与pcar中的每一行(点)的欧几里得距离,并将该pcar点添加到out_list集群中的最近点。

最佳答案

Scipy中有一个非常快速的实现:

 from scipy.spatial.distance import cdist, pdist


cdist像pchar一样获取两个向量,并计算每个点之间的距离。
pdist仅会给您该矩阵的上三角。

由于它们是在后台用C或Fortran实现的,因此它们的性能很高。

关于python - 在Python中计算PCA的欧几里得距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22965803/

10-12 20:19