当前位置: 首页 > 面试题库 >

计算numpy中2个点列表的距离

宇文育
2023-03-14
问题内容

我有2个点列表作为numpy.ndarray,每行是一个点的坐标,例如:

a = np.array([[1,0,0],[0,1,0],[0,0,1]])
b = np.array([[1,1,0],[0,1,1],[1,0,1]])

在这里,我想计算2个列表中所有对点之间的欧几里得距离,对于a中的每个点p_a,我想计算它与b中每个点p_b之间的距离。所以结果是

d = np.array([[1,sqrt(3),1],[1,1,sqrt(3)],[sqrt(3),1,1]])

如何在numpy中使用矩阵乘法来计算距离矩阵?


问题答案:

使用直接的numpy广播,您可以执行以下操作:

dist = np.sqrt(((a[:, None] - b[:, :, None]) ** 2).sum(0))

另外,scipy有一个例程可以稍微提高效率(特别是对于大型矩阵)

from scipy.spatial.distance import cdist
dist = cdist(a, b)

我将避免依赖于分解矩阵乘积(形式为A ^ 2 + B ^ 2-2AB)的解决方案,因为由于浮点舍入误差,它们在数值上可能不稳定。



 类似资料:
  • 我对计算两个numpy阵列(x和y)之间的各种空间距离感兴趣。 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.distance.cdist.html 但是,上述结果会产生太多不需要的结果。我怎样才能限制它只用于我所需的结果。 我想计算[1,11]和[31,41]之间的距离;[2,22]和[32,42

  • 问题内容: 我必须计算2个点之间的距离,X和Y是第一个点的坐标,而axisX和axisY是第二个点的坐标。我唯一的线索是此SQL语句,但是此SQL不会返回我要查找的结果。那么,有谁能帮助我确定我在此声明中可能犯的任何错误? 问题答案: 我假设axisX和axisY是您的坐标。这使用距离计算技术,可以为您提供更准确的读数。 http://www.meridianworlddata.com/Dista

  • 问题内容: 我对计算两个numpy数组(x和y)之间的各种空间距离感兴趣。 http://docs.scipy.org/doc/scipy-0.14.0/reference/generation/scipy.spatial.distance.cdist.html 但是,以上结果会产生太多不必要的结果。我如何仅将其限制为所需的结果。 我想计算[1,11]和[31,41]之间的距离;[2,22]和[3

  • 我试图使用Scala类计算两点之间的距离。但它给出了一个错误说 类型不匹配;发现:其他。需要类型(具有基础类型点):?{def x:?}请注意,隐式转换不适用,因为它们是不明确的:在[A](x:A)类型的对象Predef中确保[A]的方法any2Ensuring和在[A](x:A)“ArroAssoc[A]类型的对象Predef中的方法Ani2ArrowasSoc都是可能的其他转换函数。输入到?{

  • 问题内容: 我正在使用SQL Server。 我有两个这样的表: 表1 : 表2 : 我希望得到一个输出表,该表将比较两个表中所有的点,并告诉我在哪里有一个是的X距离之内的。 有人知道该怎么做吗?一个表大约有800行,另一个表大约有300,000行。我很困惑,甚至从哪里开始… 问题答案: 假设您的GeoLoc列在SQL Server中为“地理位置”数据类型,则您应该可以使用以下内容: “ Dist

  • 我正在寻找NumPy方法来计算两个Numpy数组(x和y)之间的Mahalanobis距离。下面的代码可以正确地计算相同的使用cdist函数的西皮。因为这个函数在我的情况下计算不必要的matix,我想要更直接的方法来计算它只使用NumPy。 我的审判: 有人能纠正这个方法吗? 下面是它的公式: http://docs.scipy.org/doc/scipy-0.14.0/reference/gen