假设我们有两个三维坐标点的数组。
A = (1000000, 3) 类型为浮点数, B = (100000, 3) 类型为浮点数
对于A中的每个坐标,我想找到与B中任意坐标的最小欧几里得距离。这意味着它应该计算A[0]与B中所有坐标之间的欧几里得距离,然后取最小值。
我编写了使用循环来实现此功能的代码。它可以工作,但由于我的数组大小,需要超过一个小时才能完成。伪代码大致如下:
理想情况下,我希望能将其向量化,但这样做似乎会因为内存使用而导致程序崩溃。有没有什么更高效的方法或技巧可以解决这个问题?我在想是否可以将问题简化为更容易处理的形式,或者重新思考如何解决它。谢谢!
A = (1000000, 3) 类型为浮点数, B = (100000, 3) 类型为浮点数
对于A中的每个坐标,我想找到与B中任意坐标的最小欧几里得距离。这意味着它应该计算A[0]与B中所有坐标之间的欧几里得距离,然后取最小值。
我编写了使用循环来实现此功能的代码。它可以工作,但由于我的数组大小,需要超过一个小时才能完成。伪代码大致如下:
minDistances = np.zeros(A.shape)
for i in range(len(A)):
queriedPoint = A[i]
distances = B - queriedPoint
euclideanDistances = np.linalg.norm(distances, axis=1)
minDistance = np.min(euclideanDistances)
minDistances[i] = minDistance
理想情况下,我希望能将其向量化,但这样做似乎会因为内存使用而导致程序崩溃。有没有什么更高效的方法或技巧可以解决这个问题?我在想是否可以将问题简化为更容易处理的形式,或者重新思考如何解决它。谢谢!