Python 中計算歐幾里得距離

Manav Narula 2023年1月30日
  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 方法的更快替代方法,當座標為元組或列表形式時可以使用。

作者: 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