NaN(Not a Number) 값을 0으로 바꾸고 무한대 값을 큰 유한 숫자로 대체하려면 numpy.nan_to_num() 메서드를 사용합니다. 이 메서드는 비유한(non-finite) 값이 모두 대체된 배열 x를 반환하며, copy 매개변수가 False인 경우 원본 배열 x 자체를 반환할 수도 있습니다.
nan_to_num() 메서드의 주요 매개변수
- 첫 번째 매개변수(x): 입력 데이터입니다.
- copy: True이면 x의 복사본을 생성하고, False이면 원본 배열을 직접(in-place) 수정합니다. 단, in-place 연산은 배열 변환 시 복사가 필요하지 않은 경우에만 적용됩니다. 기본값은 True입니다.
- nan: NaN 값을 채우는 데 사용할 값입니다. 값을 지정하지 않으면 NaN은 0.0으로 대체됩니다.
- posinf: 양의 무한대(+inf) 값을 채우는 데 사용할 값입니다. 지정하지 않으면 매우 큰 유한 숫자로 대체됩니다.
- neginf: 음의 무한대(-inf) 값을 채우는 데 사용할 값입니다. 지정하지 않으면 매우 작은(또는 음수) 숫자로 대체됩니다.
단계별 구현 방법
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
array() 메서드를 사용하여 복소수를 포함하는 NumPy 배열을 생성합니다. 이 배열에는 양의 무한대와 NaN이 함께 들어 있습니다.
arr = np.array([complex(np.inf, np.nan), np.nan])
생성된 배열을 출력해 확인합니다.
print("Our Array...\n",arr)배열의 차원을 확인합니다.
print("\nDimensions of our Array...\n",arr.ndim)배열의 데이터 타입을 확인합니다.
print("\nDatatype of our Array object...\n",arr.dtype)배열의 형태(shape)를 확인합니다.
print("\nShape of our Array object...\n",arr.shape)이제 numpy.nan_to_num() 메서드를 사용하여 NaN을 0으로, 양의 무한대를 지정한 유한 숫자로 대체합니다. 여기서는 posinf 매개변수에 22222를 전달했습니다.
print("\nResult...\n",np.nan_to_num(arr, posinf = 22222))전체 예제 코드
import numpy as np
# array() 메서드로 NumPy 배열 생성
arr = np.array([complex(np.inf, np.nan), np.nan])
# 배열 출력
print("Our Array...\n",arr)
# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)
# 형태(shape) 확인
print("\nShape of our Array object...\n",arr.shape)
# nan_to_num()으로 NaN은 0으로, 양의 무한대는 22222로 대체
print("\nResult...\n",np.nan_to_num(arr, posinf = 22222))실행 결과
Our Array... [inf+nanj nan +0.j] Dimensions of our Array... 1 Datatype of our Array object... complex128 Shape of our Array object... (2,) Result... [22222.+0.j 0.+0.j]
실행 결과를 보면, 첫 번째 요소의 실수부였던 양의 무한대(inf)가 22222로 대체되고 허수부의 NaN이 0으로 변경되어 22222.+0.j가 되었습니다. 두 번째 요소의 NaN 역시 0으로 대체되어 0.+0.j가 된 것을 확인할 수 있습니다. 이처럼 nan_to_num() 메서드는 데이터 분석이나 머신러닝 전처리 과정에서 비유한 값으로 인한 오류를 방지할 때 매우 유용하게 활용됩니다.