迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中计算欧几里得距离

作者:迹忆客 最近更新:2024/03/12 浏览次数:

在数学世界中,任何维度上两点之间的最短距离称为欧几里得距离。它是两点之差的平方和的平方根。

在 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 方法的更快替代方法,当坐标为元组或列表形式时可以使用。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便