본문 바로가기

머신러닝

[파이썬] 두 벡터 사이의 거리 및 각도

728x90

1. 두 벡터 사이의 거리

 

두 벡터 사이의 거리는 벡터의 뺄셈에 대한 노름입니다.

 

a = [3,4] 인 벡터일 때 

 

원점에서의 거리는

L1노름인 7이 됩니다.

 

b = [5,6] 인 벡터일때

 

원점에서의 거리는

L1노름인 11이 됩니다.

 

7 - 11 = |-4| = 4 이므로 

 

두 벡터 사이의 거리는 L1노름으로 봤을때 4가 됩니다.

 

출처 : https://blogik.netlify.app/BoostCamp/U_stage/04_AI_math/

 

2. 두 벡터 사이의 각도

 

두 벡터 사이의 각도는 L2노름을 사용해 구합니다.

 

각도를 구하는 공식은 코사인 제 2 법칙을 사용합니다.

 

출처 : https://darkpgmr.tistory.com/121

 

cos의 -1 승은 코사인 역함수 아크 코사인, 인버스 코사인이라고 부릅니다.

 

파이썬으로 두 벡터 사이의 각도를 구해보겠습니다.

 

 

먼저 L2노름 함수를 선언합니다.

 

다음은 각도를 구하는 함수를 선언합니다.

np.inner는 x와 y의 내적을 구합니다.

 

※내적은 

x = [1, 2]   y = [3,4] 일때 

x와 y의 내적은 1x3+2x4 = 11 즉, 내적은 성분곱의 합 입니다.

 

np.arcos는 코사인 역함수입니다.

 

a = [1,0]  b = [1,1] 인 두 벡터 사이의 각도는

0.7853...이 됩니다.

 

이 수는 라디안이므로 각도로 변환시 약 45도 입니다.

728x90
반응형