Python 中计算欧几里得距离
在数学世界中,任何维度上两点之间的最短距离称为欧几里得距离。它是两点之差的平方和的平方根。
在 Python 中,numpy、scipy 模块配备了执行数学运算并计算两点之间的线段的功能。
在本教程中,我们将讨论计算坐标之间的欧几里得距离的不同方法。
使用 NumPy 模块查找两点之间的欧几里得距离
当坐标为数组形式时,可以使用 numpy 模块查找所需的距离。它具有 norm()
函数,可以返回数组的向量范数。可以帮助计算两个坐标之间的欧几里得距离,如下所示。
import numpy as np
a = np.array((1, 2, 3))
b = np.array((4, 5, 6))
dist = np.linalg.norm(a - b)
print(dist)
输出:
5.196152422706632
我们还可以使用 numpy 模块直接实现数学公式。对于此方法,我们将使用 numpy.sum()
函数,该函数返回元素的总和,而 numpy.square()
函数将返回元素的平方。
import numpy as np
a = np.array((1, 2, 3))
b = np.array((4, 5, 6))
dist = np.sqrt(np.sum(np.square(a - b)))
print(dist)
输出:
5.196152422706632
numpy.sqrt()
函数提供值的平方根。
实现欧几里得距离公式的另一种方法是使用 dot()
函数。我们可以找到点差及其转置的点积,返回平方和。
例如,
import numpy as np
a = np.array((1, 2, 3))
b = np.array((4, 5, 6))
temp = a - b
dist = np.sqrt(np.dot(temp.T, temp))
print(dist)
输出:
5.196152422706632
使用 distance.euclidean()
函数查找两点之间的欧式距离
我们讨论了使用 numpy 模块计算欧几里得距离的不同方法。但是,这些方法可能会有点慢,因此我们有较快的替代方法。
scipy 库具有许多用于数学和科学计算的功能。distance.euclidean()
函数返回两点之间的欧几里得距离。
例如,
from scipy.spatial import distance
a = (1, 2, 3)
b = (4, 5, 6)
print(distance.euclidean(a, b))
输出:
5.196152422706632
使用 math.dist()
函数查找两点之间的欧几里得距离
math
模块也可以用作替代。该模块的 dist()
函数可以返回两点之间的线段。
例如,
from math import dist
a = (1, 2, 3)
b = (4, 5, 6)
print(dist(a, b))
输出:
5.196152422706632
scipy
和 math
模块方法是 NumPy
方法的更快替代方法,当坐标为元组或列表形式时可以使用。
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn