Python 中计算欧几里得距离

Manav Narula 2023年1月30日 2021年4月29日
  1. 使用 NumPy 模块查找两点之间的欧几里得距离
  2. 使用 distance.euclidean() 函数查找两点之间的欧式距离
  3. 使用 math.dist() 函数查找两点之间的欧几里得距离
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

scipymath 模块方法是 NumPy 方法的更快替代方法,当坐标为元组或列表形式时可以使用。

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

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

相关文章 - NumPy Math