Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

NumPy nan_to_num()으로 복소수 배열의 NaN을 0으로, 양의 무한대를 유한 수로 대체하는 방법

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() 메서드는 데이터 분석이나 머신러닝 전처리 과정에서 비유한 값으로 인한 오류를 방지할 때 매우 유용하게 활용됩니다.