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