NumPy 기초·연습 문제

민코프스키 거리 행렬 (Lp)

문제 설명PROBLEM

preview

민코프스키 거리 행렬 (Lp)

앞선 거리 3형제 (L1, L2, L∞) 를 하나의 파라미터 로 묶는 일반화:

Dij=(kxikyjkp)1/pD_{ij} = \Big( \sum_k |x_{ik} - y_{jk}|^p \Big)^{1/p}

파라미터 p:

  • p = 1 → 맨해튼 (L1)
  • p = 2 → 유클리드 (L2)
  • p → ∞ → 체비셰프 (L∞)
  • 그 사이 값도 가능 (예: p = 1.5 는 중간 성질)

KNN 구현체 대부분이 이 일반화된 거리를 매개변수로 받습니다. scikit-learn 의 metric='minkowski', p=....

과제

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

  • X shape (N, D), Y shape (M, D), p > 0 float.
  • 반환: (N, M).
  • 루프 없이 브로드캐스팅 + np.abs + ** p + sum + ** (1/p).

테스트 케이스

#이름검증
1shape(3, 5)
2p=1 == Manhattan같은 데이터로 두 방법 일치
3p=2 == Euclidean같은 데이터로 두 방법 일치
4자기 비교 대각선 0X=Y 일 때
5루프 없이for/while 금지
개념 노트와 실수 포인트

NumPy 기초

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