Tag: 欧几里德距离

两个不同Numpy数组中的点之间的最小欧氏距离,不在

我有两个x – y坐标数组,我想找出一个数组中每个点与另一个数组中的所有点之间的最小欧几里得距离。 数组不一定是相同的大小。 例如: xy1=numpy.array( [[ 243, 3173], [ 525, 2997]]) xy2=numpy.array( [[ 682, 2644], [ 277, 2651], [ 396, 2640]]) 我当前的方法遍历xy1每个坐标xy ,并计算该坐标和其他坐标之间的距离。 mindist=numpy.zeros(len(xy1)) minid=numpy.zeros(len(xy1)) for i,xy in enumerate(xy1): dists=numpy.sqrt(numpy.sum((xy-xy2)**2,axis=1)) mindist[i],minid[i]=dists.min(),dists.argmin() 有没有办法消除for循环,并以某种方式做两个数组之间的逐个元素的计算? 我设想生成一个距离matrix,我可以find每行或每列的最小元素。 另一种方法来看问题。 说我连接xy1 (长度m )和xy2 (长度p )到xy (长度n ),我存储了原始数组的长度。 从理论上讲,我应该能够从这些坐标中生成一个nxn距离matrix,从中我可以获取一个mxp子matrix。 有没有办法有效地生成这个子matrix?

欧几里德距离怎么能用numpy来计算?

我在3D中有两点: (xa, ya, za) (xb, yb, zb) 我想要计算距离: dist = sqrt((xa-xb)^2 + (ya-yb)^2 + (za-zb)^2) 用Numpy或者Python来做这个最好的方法是什么? 我有: a = numpy.array((xa ,ya, za)) b = numpy.array((xb, yb, zb))