我有6个列表存储两组位置(每个3个列表)的x,y,z坐标。我想计算两组中每个点之间的距离。我写了自己的距离函数,但速度很慢。我的一个名单上有大约一百万条目。 我试过了cdist,但是它产生了一个距离矩阵,我不明白它的意思。是否有另一种内置功能可以做到这一点?在python中使用内置函数查找3d距离
0
A
回答
1
如果可能,请使用numpy
模块来处理这类事情。它比使用常规python列表更有效率。
我解释你的问题,像这样的
- 你有两套分
- 两组具有相同数量的中集1点(
N
) - 点
k
的指向k
有关在集合2中。如果每个点是某个对象的坐标,我将它解释为包含初始点的集合1,并且在某个其他时间t将集合2设置为点。 - 你想找到一套2
的距离d(k) = dist(p1(k), p2(k))
其中p1(k)
是集1和p2(k)
点数k
是第一点k
假设你6名名单x1_coords
,y1_coords
,z1_coords
和x2_coords
,y2_coords
,z2_coords
,那么你可以计算出这样的距离
import numpy as np
p1 = np.array([x1_coords, y1_coords, z1_coords])
p2 = np.array([x2_coords, y2_coords, z2_coords])
squared_dist = np.sum(p1**2 + p2**2, axis=0)
dist = np.sqrt(squared_dist)
p1(k)
和p2(k)
之间的距离现在作为dist[k]
存储在numpy数组中。对于速度:在我的笔记本电脑上使用“Intel(R)Core(TM)i7-3517U CPU @ 1.90GHz”时,计算N = 1E6的两组点之间的距离为45毫秒。
+0
这不回答原来的问题。如果你无法访问numpy会怎么样? – DuckPuncher
相关问题
- 1. 在R中,使用dplyr函数来查找最小距离
- 2. 在Python列表中查找彼此相距一定距离内的数字
- 3. 使用Python查找3D中周围数据点的距离和角度。查找直线
- 4. 使用MySQL查找距离的点数
- 5. 使用db2查找特定距离内的位置
- 6. 距离点3D
- 7. 在给定距离处沿线查找3D点
- 8. 内置功能找到距离
- 9. 使用地点ID查找距离
- 10. 函数Voronoi在scipy.spatial中使用的距离函数是什么?
- 11. 查找使用Python矩阵中的最小值(不使用内置min函数)
- 12. 在StringBuilder中查找字符距离
- 13. 查找两个3D线段之间的最短距离
- 14. Postgresql:在距离海岸的距离内找到道路端点
- 15. Mysql距离函数
- 16. 按特定距离查找距离目标位置最近的位置
- 17. 仅使用距离和方位查找位置?
- 18. AS3:查找旋转距离
- 19. 查找接近距离GPS
- 20. 查找距离标记
- 21. Django TastyPie Geo距离查找
- 22. 不能使用函数名距离
- 23. 程序涉及使用距离函数
- 24. 查找曼哈顿距离中两组之间的距离
- 25. 使用循环在SQL中查找多个距离
- 26. 如何在iphone中使用摄像头查找距离编程
- 27. java 3D渲染距离
- 28. 3D距离矢量化
- 29. 查找距离MongoDB最近的偶数
- 30. 在Python中编辑距离
请问您能展示一些样例输入和输出 – thefourtheye
您的距离函数以及您正在解决的确切问题...笛卡尔3D空间中的距离函数非常简单:'sqrt((x2 - x1)** 2 +(y2 - y1)** 2 +(z2 - z1)** 2)',恐怕没有太多优化。 – Altaisoft
'我的一个名单中有大约一百万个条目。“其他名单呢?如果它们的尺寸大约相当于10 * 6 * 10^6 = 10^12对,我甚至担心内置函数会很慢。 – starrify