【问题标题】:finding the distance between a set of points using scipy.spatial.distance.cdist(X, Y) in python在 python 中使用 scipy.spatial.distance.cdist(X, Y) 查找一组点之间的距离
【发布时间】:2014-02-09 16:37:50
【问题描述】:

我有一个名为 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 中的所有点之间的距离。

【问题讨论】:

  • 如果你计算cdist(A,B)然后取y[:,q]作为B的第q项的距离,得到的矩阵是否太大?
  • 太完美了,谢谢!如果您想发布官方答案,我可以将问题标记为已回答:)

标签: python arrays distance


【解决方案1】:

两种解决方案:

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

【讨论】:

  • 这两种解决方案中哪一种的计算时间更短?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2022-07-29
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多