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

2024-06-17 10:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组数据,叫做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,:])

但我觉得这没用。我只想得到一个输出,显示第q行B与A中所有点之间的距离


Tags: 数据inimport距离forlenrangescipy
1条回答
网友
1楼 · 发布于 2024-06-17 10:24:41

两种解决方案:

直接计算完整矩阵,并访问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

相关问题 更多 >