NumPy 기초·연습 문제

코사인 유사도

문제 설명PROBLEM

preview

코사인 유사도

두 벡터의 각도만 비교하는 유사도. 크기(norm)를 제거하므로 방향이 비슷한지만 봅니다. 문서·임베딩 비교에서 기본 도구:

cos(x,y)=xyxy\text{cos}(\mathbf{x}, \mathbf{y}) = \frac{\mathbf{x} \cdot \mathbf{y}}{\|\mathbf{x}\| \, \|\mathbf{y}\|}

범위: [1,1][-1, 1]

  • 1 — 같은 방향
  • 0 — 직각 (무관)
  • -1 — 반대 방향

과제

함수 cosine(x, y) 를 완성하세요.

  • 입력: 1D 배열 x, y (같은 길이).
  • 반환: Python float.
  • np.linalg.norm, np.dot (또는 np.sum(x*y)) 사용.

테스트 케이스

#이름xy기대
1자기자신[1, 2, 3][1, 2, 3]1.0
2스케일 불변[1, 0][5, 0]1.0
3직각[1, 0][0, 1]0.0
4반대 방향[1, 2][-1, -2]-1.0
5일반[1, 1][1, 0]1/√2 ≈ 0.707
개념 노트와 실수 포인트

NumPy 기초

  • ⚠️ axis 헷갈림: axis=0 은 행을 가로질러 → 열별 결과, axis=1행별 결과.
  • 브로드캐스팅: shape 를 뒤에서부터 맞춤(1 또는 같은 크기).
  • 반복문 대신 벡터화 연산. @(행렬곱) 와 *(요소곱) 구분.