데이터: 데이터 타입 및 변환 – np.floor()
ㅁ 데이터 타입 및 변환
ㅇ 정의:
NumPy에서 제공하는 함수로, 입력된 실수 배열의 각 원소를 내림(floor)하여 해당 값보다 작거나 같은 가장 큰 정수를 반환한다.
ㅇ 특징:
– 소수점 이하를 버리고 정수로 변환하되, 부호에 따라 0 방향이 아닌 음의 무한대 방향으로 내림 처리한다.
– 입력이 정수형이면 변환 없이 그대로 반환한다.
– 벡터화 연산이 가능하여 배열 단위로 빠르게 처리할 수 있다.
ㅇ 적합한 경우:
– 연속형 수치를 하한 기준으로 정수화해야 하는 경우
– 좌표계나 그리드 인덱스 계산 시 음수 포함 내림 처리가 필요한 경우
– 가격, 시간 등의 데이터를 특정 단위로 절삭할 때
ㅇ 시험 함정:
– np.floor()는 단순히 소수점 절삭(truncation)과 다르다. trunc는 0 방향으로 절삭하지만 floor는 음수에서 더 작은 정수로 이동한다.
– round()와 혼동하기 쉽다. round는 반올림, floor는 무조건 내림.
– dtype 변환은 자동으로 이루어지지 않으며, float형 결과가 반환되므로 int 변환이 필요할 수 있다.
ㅇ 시험 대비 “패턴 보기” 예시:
O: np.floor(-1.2) → -2.0
X: np.floor(-1.2) → -1.0
O: np.floor([1.9, 2.1]) → [1.0, 2.0]
X: np.floor([1.9, 2.1]) → [2, 2]
ㅁ 추가 학습 내용
np.floor()는 반환값이 float형이므로, 정수형이 필요할 경우 astype(int) 또는 np.int64로 변환해야 한다.
np.trunc(), np.ceil()과의 차이점을 비교 정리하면 이해와 시험 대비에 도움이 된다.
부동소수점 연산 특성상 -1.0000000002 같은 값은 floor 처리 시 -2.0이 될 수 있으므로 주의해야 한다.
pandas.Series나 DataFrame에 적용할 때는 np.floor(df[‘col’]) 형태로 사용하며, NaN 값은 그대로 NaN으로 유지된다.
np.floor_divide와 혼동하지 않도록 주의해야 하며, np.floor_divide는 나눗셈 후 내림한 몫을 반환한다.