Python에서 유클리드 거리 계산

Manav Narula 2023년1월30일
  1. NumPy 모듈을 사용하여 두 점 사이의 유클리드 거리 찾기
  2. distance.euclidean()함수를 사용하여 두 점 사이의 유클리드 거리 찾기
  3. math.dist()함수를 사용하여 두 점 사이의 유클리드 거리 찾기
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