반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- Github
- Google Spreadsheet
- math
- string
- Apache
- hive
- PySpark
- array
- matplotlib
- SQL
- Java
- Google Excel
- django
- PANDAS
- PostgreSQL
- 파이썬
- Kotlin
- c#
- GIT
- Excel
- Mac
- numpy
- list
- Tkinter
- google apps script
- gas
- Redshift
- Python
- dataframe
Archives
- Today
- Total
달나라 노트
Python numpy : select (여러 조건을 한 번에 처리하는 메서드) 본문
728x90
반응형
NumPy select() — 여러 조건을 한 번에 처리하는 메서드
조건 목록을 순서대로 검사해서, 처음으로 True인 조건에 해당하는 값을 선택합니다. 코드로 치면 if-elif-elif-else 구조입니다.
기본 문법
np.select(condlist, choicelist, default=0)
| 파라미터 | 설명 |
|---|---|
condlist |
조건들의 리스트. 순서대로 검사하며 처음 True인 조건이 선택됨 |
choicelist |
각 조건에 대응하는 값들의 리스트. condlist와 길이가 같아야 함 |
default |
어떤 조건도 해당하지 않을 때 사용할 값 (기본값: 0) |
내부 동작 방식
scores >= 90 같은 표현은 array 전체에 한 번에 적용되어 boolean array를 만듭니다.
scores = np.array([45, 82, 91, 63, 77])
scores >= 90 # → [False, False, True, False, False]
scores >= 80 # → [False, True, True, False, False]
scores >= 70 # → [False, True, True, False, True]
scores >= 60 # → [False, True, True, True, True]
condlist는 boolean array들의 리스트입니다. np.select는 이 boolean array들을 모두 만들어 둔 뒤, 각 인덱스 위치마다 위에서부터 훑어 처음 True인 항목의 choice를 선택합니다.
index=0, 45점 → False/False/False/False → default 'F'
index=1, 82점 → False/True → 'B'
index=2, 91점 → True → 'A'
index=3, 63점 → False/False/False/True → 'D'
index=4, 77점 → False/False/True → 'C'
input과 output의 형태·개수·순서는 항상 동일합니다.
예시 1 — 시험 점수 → 등급
import numpy as np
scores = np.array([45, 82, 91, 63, 77])
condlist = [
scores >= 90,
scores >= 80,
scores >= 70,
scores >= 60,
]
choicelist = ['A', 'B', 'C', 'D']
result = np.select(condlist, choicelist, default='F')
# ['F' 'B' 'A' 'D' 'C']
예시 2 — DataFrame 새 컬럼 생성
import numpy as np
import pandas as pd
df = pd.DataFrame({'매출': [120, 450, 890, 1500]})
condlist = [
df['매출'] >= 1000,
df['매출'] >= 500,
df['매출'] >= 200,
]
choicelist = ['최우수', '우수', '보통']
df['등급'] = np.select(condlist, choicelist, default='미달')
# 매출 등급
# 0 120 미달
# 1 450 보통
# 2 890 우수
# 3 1500 최우수
np.where() vs np.select()
np.where() |
np.select() |
|
|---|---|---|
| 조건 수 | 1개 | 여러 개 |
| 비유 | if-else | if-elif-else |
조건이 하나면 np.where, 여러 개면 np.select가 적합합니다.
728x90
반응형
'Python > Python numpy' 카테고리의 다른 글
| Python numpy : where() — 조건에 따라 두 값 중 하나를 선택하는 메서드 (0) | 2026.05.14 |
|---|---|
| Python numpy : polyfit() — 점들의 패턴에 가장 잘 맞는 다항식 계수를 추정하는 메서드 (0) | 2026.05.14 |
| Python numpy : argmax, argmin (최대값의 index, 최소값의 index) (0) | 2025.11.08 |
| Python numpy : power (거듭제곱) (0) | 2024.03.29 |
| Python numpy : percentile (백분위수), quantile (사분위수) (0) | 2024.03.25 |
Comments
