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

Python NumPy nan_to_num()으로 NaN을 0으로 변환하고 음의 무한대 값 채우기

Python에서 배열에 포함된 NaN을 0으로 대체하고, 무한대 값을 크기가 큰 유한 수로 바꾸려면 numpy.nan_to_num() 메서드를 사용하면 됩니다. 이 메서드는 비유한(non-finite) 값들이 모두 대체된 배열을 반환하며, copy=False로 설정한 경우 원본 배열 자체를 반환할 수도 있습니다.

numpy.nan_to_num()의 주요 매개변수

nan_to_num() 메서드는 다음과 같은 매개변수를 가집니다.

  • 1번째 매개변수(x) — 입력 데이터입니다.
  • 2번째 매개변수(copy) — 원본 배열의 복사본을 생성할지(True), 아니면 제자리(in-place)에서 값을 대체할지(False)를 결정합니다. 제자리 연산은 배열로 캐스팅할 때 복사본이 필요 없는 경우에만 수행됩니다. 기본값은 True입니다.
  • 3번째 매개변수(nan) — NaN 값을 채우는 데 사용할 값입니다. 값을 지정하지 않으면 NaN은 기본적으로 0.0으로 대체됩니다.
  • 4번째 매개변수(posinf) — 양의 무한대(+inf)를 채우는 데 사용할 값입니다. 값을 지정하지 않으면 매우 큰 양수로 대체됩니다.
  • 5번째 매개변수(neginf) — 음의 무한대(-inf)를 채우는 데 사용할 값입니다. 값을 지정하지 않으면 매우 작은(음의) 수로 대체됩니다.

처리 단계

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

array() 메서드를 사용해 numpy 배열을 생성합니다.

arr = np.array([np.inf, -np.inf, np.nan, -128, 128])

생성된 배열을 출력해 확인합니다.

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으로, 음의 무한대를 지정한 값으로 대체합니다.

print("\nResult...\n",np.nan_to_num(arr, neginf = 22222))

전체 예제 코드

import numpy as np

# array() 메서드로 numpy 배열 생성
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])

# 배열 출력
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, neginf = 22222))

실행 결과

Our Array...
[ inf -inf nan -128. 128.]

Dimensions of our Array...
1

Datatype of our Array object...
float64

Shape of our Array object...
(5,)

Result...
[ 1.79769313e+308 2.22220000e+004 0.00000000e+000 -1.28000000e+002
1.28000000e+002]

실행 결과를 보면 양의 무한대(inf)는 float64 타입이 표현할 수 있는 최댓값인 약 1.797e+308로, 음의 무한대(-inf)는 지정한 값인 22222로, 그리고 NaN0.0으로 각각 성공적으로 대체된 것을 확인할 수 있습니다.