
67번 Hard Thresholding 은 임계값 λ 를 고정해서 "λ 이하 버림". 실전에선 "정확히 k 개만 남기고 싶다" 가 더 자연스럽죠:
이는 L0 제약 집합 로의 투영 입니다. Iterative Hard Thresholding(IHT) 에서 사용.
루프 없이:
idx = np.argsort(-np.abs(x))[:k]
mask = np.zeros_like(x, dtype=bool); mask[idx] = True
return np.where(mask, x, 0)
함수 top_k_sparse(x, k) 를 완성하세요.
x, 정수 k.argsort 의 안정성에 위임.k >= len(x) 이면 그대로 반환.k <= 0 이면 0 벡터 반환.| # | 이름 | 검증 |
|---|---|---|
| 1 | ‖·‖_0 = k | 비영 원소 수 = k |
| 2 | 상위 k 인덱스 보존 | |
| 3 | 값이 그대로 (축소 없음) | |
| 4 | k >= n → 항등 | |
| 5 | k = 0 → 영벡터 | |
| 6 | 음수도 magnitude 기준 | [-5, 3] k=1 → [-5, 0] |
코드를 작성하고 Run 을 눌러보세요.