NumPy 기초·연습 문제

엔트리별 L1 노름

문제 설명PROBLEM

preview

엔트리별 L1 노름 (Elementwise L1)

Frobenius(64) 은 제곱합의 루트 (L2 계열). L1 은 절댓값의 합입니다:

A1,entry=i,jAij\|A\|_{1,\text{entry}} = \sum_{i,j} |A_{ij}|

머신러닝에서는 Lasso 같은 L1 정규화 에서 이 양(또는 벡터 L1)을 페널티로 사용해 희소성(sparsity) 를 유도합니다.

L1 vs L2

노름민감도해의 성질
Frobenius / L2큰 원소 강조부드러움, 모든 성분에 분산
L1모든 원소 선형희소 — 많은 원소가 정확히 0이 됨

과제

함수 elementwise_l1(A) 를 완성하세요.

  • 반환: Python float.
  • np.abs(A).sum() 한 줄.
  • np.linalg.norm 금지.

테스트 케이스

#이름검증
1영행렬 → 0
2음수 원소 절댓값 처리[[-1, 2, -3]]6
3스케일 선형`‖cA‖ =
4np.abs(A).sum() 일치
5np.linalg.norm 금지
개념 노트와 실수 포인트

NumPy 기초

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