PROGRESS
8 / 13
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
QUESTION 08 #306
넘파이 배열에서 8세 미만(미취학 아동)인 요소를 찾아 모두 0으로 변경하려고 합니다. 빈칸을 채워보세요.
main.py
import numpy as np
age = np.array([3, 55, 10, 22, 6, 30, 7, 5])
# 8세 미만은 0으로 변경, 나머지는 그대로 유지
# 사용법: np.함수명(조건, 참일_때_값, 거짓일_때_값)
age2 = np.(age < 8, 0, age)
print("결과:", age2)
HINT
힌트: 조건을 만족하는 위치를 찾아 값을 치환하는 함수는 np.where()입니다. 앞서 성인/미성년 판별 시 사용했던 함수와 동일합니다.
실행 결과 예시
결과: [ 0 55 10 22 0 30 0 0]
INTERACTIVE SHELL
Shift + Enter 로 즉시 실행
np.where()로 특정 값 치환하기
np.where()는 조건을 만족하는 요소만 골라서 값을 바꾸고, 나머지는 원래 값을 유지할 수 있습니다.
코드 분석
age = np.array([3, 55, 10, 22, 6, 30, 7, 5])
age2 = np.where(age < 8, 0, age)
| 인자 | 값 | 설명 |
|---|---|---|
| 조건 | age < 8 |
8세 미만인가? |
| 참일 때 | 0 |
0으로 변경 |
| 거짓일 때 | age |
원래 값 유지 |
동작 과정
원본: [3, 55, 10, 22, 6, 30, 7, 5 ]
조건: [T, F, F, F, T, F, T, T ] ← age < 8
결과: [0, 55, 10, 22, 0, 30, 0, 0 ]
↑ ↑ ↑ ↑
8미만 → 0으로 변경
활용 패턴
# 패턴 1: 특정 조건의 값만 변경, 나머지 유지
np.where(조건, 새로운값, 원본배열)
# 패턴 2: 이상값(Outlier) 처리
data = np.array([10, 20, 999, 30, 15])
clean = np.where(data > 100, 0, data)
# 결과: [10, 20, 0, 30, 15]
# 패턴 3: 음수를 0으로 변환
arr = np.array([-5, 3, -2, 7])
np.where(arr < 0, 0, arr)
# 결과: [0, 3, 0, 7]
💡 핵심: 거짓일 때 값에 원본 배열을 넣으면 조건을 만족하는 요소만 변경할 수 있습니다.