在python中使用scipy.spatial.distance.cdist(X,Y)查找一组点之间的距离

时间:2014-02-09 16:37:50

标签: python arrays distance

我有一个数组数组,名为A,类似于:

array([[0.59, 1.23], [0.89, 1.67], [0.21,0.99]...])

并且其中有大约400套[x,y]点。我想找到A中每组点与B中每组点之间的距离,这是另一个看起来与A完全相同但是长度的一半的数组(所以大约有200组[x,y]点) 。因此,如果我想找到B中第q对[x,y]值与A中所有[x,y]值之间的距离,我尝试按照

的方式做一些事情。
import scipy.spatial.distance
for q in range(0,len(B)):
    y=scipy.spatial.distance.cdist(A,B[:q,:])

但我认为这不起作用。我只想要一个输出,显示B的第q行与A中所有点之间的距离。

1 个答案:

答案 0 :(得分:2)

两种解决方案:

直接计算完整矩阵,并访问第q列,获取A和B [q]之间的值。

d = scipy.spatial.distance.cdist(A,B)

for q in range(len(B)):
    y = d[:,q]
    print y

如果生成的矩阵太大而无法保存在内存中。你可以做到这一点。

for q in range(len(B)):
    y = scipy.spatial.distance.cdist(A,[B[q]])
    print y