NumPy 기초·연습 문제

쌍별 거리 행렬 (Pairwise Distances)

문제 설명PROBLEM

preview

쌍별 거리 행렬

데이터셋 XX 의 모든 점과 YY 의 모든 점 사이 유클리드 거리를 한 번에 계산합니다. KNN, 군집화 등에서 핵심 연산이에요.

Dij=xiyj2=k(xikyjk)2D_{ij} = \|x_i - y_j\|_2 = \sqrt{\sum_k (x_{ik} - y_{jk})^2}

결과 shape: X(N, D), Y(M, D)D(N, M).

브로드캐스팅 팁

X[:, None, :]   # (N, 1, D)
Y[None, :, :]   # (1, M, D)
# 뺄셈 → (N, M, D)

이후 마지막 축으로 제곱합·루트를 취하면 (N, M).

과제

함수 pairwise(X, Y) 를 완성하세요.

  • for 루프 없이 브로드캐스팅으로 구현.
  • 반환: (N, M) NumPy 배열.

테스트 케이스

#이름설명
11점 vs 1점pairwise([[0,0]], [[3,4]])[[5]]
2shape 검증X (4,3), Y (5,3)(4,5)
3X=Y 대각선 0자기자신까지 거리는 0
4X=Y 대칭D[i,j] == D[j,i]
5루프 없이for/while 금지
개념 노트와 실수 포인트

NumPy 기초

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