我有两个点数组:list1list1.shape=[N,3]和list2list2.shape=[M,3]。在N,M内:点的总数,(x,y,z)是3D中的3个坐标
现在我想检查list1的每个点与list2的每个点是否在距离r之内。一种自然的方法是for循环:
for i in range(N):
for j in range(M):
if (list1[i, 0] - list2[j, 0])**2 + (list1[i, 1] - list2[j, 1])**2 + (list1[i, 2] - list2[j, 2])**2 < r**2:
''' Return 1 if list1[i] is within list2[j] '''
return True
else:
''' Return 0 if list1[i] is not within list2[j] '''
return False
但是速度太慢了。我能用更有效的方法吗?你知道吗
可以使用外部操作来计算距离矩阵,而不使用for循环:
其中每条线是点i关于所有点的距离。要使用您的标准确定点i是否接近任何点:
相关问题 更多 >
编程相关推荐