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



我有一个数据数组,名为A,看起来像:

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

其中有大约400组[x,y]点。我想找到A中每组点到B中每组点之间的距离,这是另一个看起来与A完全相同但长度是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中所有点之间的距离。

两种解决方案:

直接计算完整矩阵,并访问A和B[q]之间的值的第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

最新更新