2024-04-27 00:36:50 发布
网友
我有6个列表存储两组位置的x、y、z坐标(每个列表3个)。我想计算两组中每个点之间的距离。我已经写了我自己的距离函数,但速度很慢。我的一张单子上有大约100万个条目。 我试过cdist,但它产生了一个距离矩阵,我不明白它的意思。有没有其他内置函数可以做到这一点?
如果可能的话,使用numpy模块来处理这类事情。它比使用常规的python列表更有效。
numpy
我这样解释你的问题
N
k
d(k) = dist(p1(k), p2(k))
p1(k)
p2(k)
假设您的6个列表分别是x1_coords、y1_coords、z1_coords和x2_coords、y2_coords、z2_coords,那么您可以这样计算距离
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-p2)**2, axis=0) dist = np.sqrt(squared_dist)
p1(k)和p2(k)之间的距离现在作为dist[k]存储在numpy数组中。
dist[k]
至于速度:在我的笔记本电脑上,使用“英特尔(R)酷睿(TM)i7-3517U CPU@1.90GHz”,计算N=1E6的两组点之间距离的时间是45ms
如果可能的话,使用
numpy
模块来处理这类事情。它比使用常规的python列表更有效。我这样解释你的问题
N
)k
与集合2中的点k
相关。如果每个点都是某个对象的坐标,我将其解释为包含初始点的集合1,并在另一个时间t将该点设置为集合2d(k) = dist(p1(k), p2(k))
,其中p1(k)
是集合1中的点编号k
,而p2(k)
是集合2中的点编号k
。假设您的6个列表分别是
x1_coords
、y1_coords
、z1_coords
和x2_coords
、y2_coords
、z2_coords
,那么您可以这样计算距离p1(k)
和p2(k)
之间的距离现在作为dist[k]
存储在numpy数组中。至于速度:在我的笔记本电脑上,使用“英特尔(R)酷睿(TM)i7-3517U CPU@1.90GHz”,计算N=1E6的两组点之间距离的时间是45ms
相关问题 更多 >
编程相关推荐