我有 6 个列表存储两组位置的 x、y、z 坐标(每个 3 个列表)。我想计算两组中每个点之间的距离。我已经编写了自己的距离函数,但速度很慢。我的一个列表有大约 100 万个条目。我试过 cdist,但它产生了一个距离矩阵,我不明白它是什么意思。是否有另一个内置函数可以做到这一点?
原文由 Abhinav Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有 6 个列表存储两组位置的 x、y、z 坐标(每个 3 个列表)。我想计算两组中每个点之间的距离。我已经编写了自己的距离函数,但速度很慢。我的一个列表有大约 100 万个条目。我试过 cdist,但它产生了一个距离矩阵,我不明白它是什么意思。是否有另一个内置函数可以做到这一点?
原文由 Abhinav Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答873 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
如果可能,请使用
numpy
模块来处理此类事情。它比使用常规 python 列表更有效。我这样解释你的问题
N
)k
k
与集合 2 中的点 — 有关。如果每个点都是某个对象的坐标,我将其解释为包含初始点和集合 2 的集合 1其他时间 t 的点。d(k) = dist(p1(k), p2(k))
wherep1(k)
is point numberk
in set 1 andp2(k)
is point numberk
在第 2 组中。Assuming that your 6 lists are
x1_coords
,y1_coords
,z1_coords
andx2_coords
,y2_coords
,z2_coords
分别,然后你可以这样计算距离p1(k)
和p2(k)
之间的距离现在存储在 numpy 数组中作为dist[k]
。至于速度:在配备“Intel® Core™ i7-3517U CPU @ 1.90GHz”的笔记本电脑上,计算 N=1E6 的两组点之间的距离的时间为 45 毫秒。