AI/Tips

[Numpy] Serise clip() 함수 - 값 범위 제한하기

Linuxias 2024. 4. 19. 16:08
반응형

NumPy는 파이썬에서 과학 및 수학적 계산을 위한 핵심 라이브러리 중 하나입니다. NumPy의 다양한 함수와 메서드는 데이터 조작 및 분석을 쉽게 할 수 있도록 도와줍니다. 여기에는 데이터의 값을 제한하고 특정 범위 내에 값을 유지하는 데 유용한 clip() 함수가 있습니다. 이번 글에서는 NumPy의 clip() 함수를 소개하고 활용하는 방법에 대해 알아보겠습니다.

numpy.clip() 함수란?

numpy.clip() 함수는 주어진 배열의 값을 지정된 최소값과 최대값 사이로 제한합니다. 이 함수를 사용하면 데이터의 범위를 제한하고 이상치를 처리하는 데 유용합니다. numpy.clip()의 구문은 다음과 같습니다.

numpy.clip(a, a_min, a_max, out=None)

여기서:

  • a: 값을 제한할 배열입니다.
  • a_min: 값의 하한입니다. 이 값보다 작은 모든 요소는 a_min으로 대체됩니다.
  • a_max: 값의 상한입니다. 이 값보다 큰 모든 요소는 a_max로 대체됩니다.
  • out: 선택적으로 출력 배열을 지정합니다. 이를 사용하여 결과를 기존 배열에 저장할 수 있습니다.

예시

import numpy as np

# 1차원 배열 생성
arr = np.array([1, 2, 3, 4, 5])

# 값의 하한과 상한 설정
min_val = 2
max_val = 4

# clip() 함수 사용
clipped_arr = np.clip(arr, min_val, max_val)

print(clipped_arr)  # 출력: [2 2 3 4 4]

위의 예시에서는 배열 arr의 값들을 2와 4 사이의 값으로 제한했습니다. 따라서 결과 배열 clipped_arr은 2보다 작은 값은 2로, 4보다 큰 값은 4로 대체되었습니다.

활용 예시

numpy.clip() 함수는 다양한 상황에서 유용하게 사용될 수 있습니다. 예를 들어:

  1. 데이터 클리닝: 이상치를 제거하거나 유효한 값 범위를 유지할 수 있습니다.
  2. 이미지 처리: 픽셀 값의 범위를 조절하여 이미지를 향상시키거나 정규화할 수 있습니다.
  3. 머신러닝: 모델 훈련 전에 입력 데이터를 정규화하거나 특정 범위로 스케일링할 수 있습니다.

이상치 제거 예시코드

df_iqr = df[['col1', 'col2', 'col3']].apply(
    lambda x: x.quantile([0.25, 0.75]).rename({0.25:'Q1', 0.75: 'Q3'})
).T.assign(
    IQR = lambda x: x['Q3'] - x['Q1']
).assign(
    LB = lambda x: x['Q1'] - 1.5 * x['IQR'],
    UB = lambda x: x['Q3'] + 1.5 * x['IQR']
)

df['col1', 'col2', 'col3'].apply(
    lambda x: x.clip(df_iqr.loc[x.name, 'LB'], df_iqr.loc[x.name, 'UB']) 
)

 

결론

NumPy의 numpy.clip() 함수는 배열의 값을 지정된 범위 내로 제한하는 데 사용됩니다. 이를 통해 데이터의 범위를 조절하고 이상치를 처리할 수 있습니다. 이 함수는 데이터 전처리 및 분석에서 유용하게 활용될 수 있으며 다양한 응용 분야에서 활용될 수 있습니다.

반응형