📜  使用 NumPy 计算欧几里得距离(1)

📅  最后修改于: 2023-12-03 15:06:49.282000             🧑  作者: Mango

使用 NumPy 计算欧几里得距离

简介

欧几里得距离(Euclidean Distance)是在二维或三维空间中两个点之间的距离。在现实生活中,我们经常在数学、物理、机器学习和计算机视觉等领域中使用欧几里得距离。

NumPy是一个开源的Python科学计算库,在计算欧几里得距离时,它提供了一个非常方便和快速的方式。

NumPy 计算欧几里得距离的函数

NumPy提供的计算欧几里得距离的函数是numpy.linalg.norm()

numpy.linalg.norm() 函数的语法如下:

numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)

其中,参数说明如下:

  • x:为输入的数组。
  • ord:为范数的种类。默认为None,表示使用默认的二范数(欧几里得距离)。还可以选择使用一范数、二范数或无穷范数等。
  • axis:为范数计算的维度。默认为None,计算所有元素的范数。还可以选择计算每行的范数或每列的范数。
  • keepdims:为是否保持原数组的维度。默认为False。
实例演示

假设有两个数组(矢量):a和b,分别如下所示:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

我们可以使用linalg.norm()函数来计算它们的欧几里得距离:

distance = np.linalg.norm(a-b)
print(distance)

代码运行结果为:

5.19615242271

因此,数组a和数组b之间的欧几里得距离为5.196。

同时,我们也可以计算多维数组之间的欧几里得距离。例如,假设我们有一个二维数组:

c = np.array([[1, 2], [3, 4], [5, 6]])
d = np.array([[7, 8], [9, 10], [11, 12]])

我们可以计算c和d之间的欧几里得距离:

distance = np.linalg.norm(c-d, axis=1, keepdims=True)
print(distance)

代码运行结果为:

[[ 8.48528137]
 [11.3137085 ]
 [14.14213562]]

因此,我们可以看到,c和d之间的欧几里得距离是一个包含三个元素的列向量。

总结

在本文中,我们介绍了使用NumPy计算欧几里得距离的方法。我们可以使用NumPy提供的numpy.linalg.norm()函数来计算二维或三维空间中的两个点之间的距离。同时,该函数也可以计算多维数组之间的欧几里得距离。