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

Python NumPy nanmin() 완벽 가이드 – NaN을 무시하고 음의 무한대가 포함된 배열의 최소값 구하기

배열의 최소값을 반환하거나 NaN(Not a Number)을 무시한 최소값을 계산하려면 Python에서 numpy.nanmin() 메서드를 사용합니다. 이 메서드는 지정된 축(axis)이 제거된 형태로 입력 배열과 동일한 shape의 배열을 반환합니다. 만약 입력 배열이 0차원 배열이거나 axis가 None이면 스칼라 ndarray가 반환되며, dtype은 항상 원본 배열과 동일하게 유지됩니다.

numpy.nanmin() 주요 매개변수

1. a

최소값을 구하고자 하는 숫자들을 담고 있는 배열입니다. 배열이 아닌 값이 전달되면 자동으로 배열로 변환을 시도합니다.

2. axis

최소값을 계산할 축 또는 축들입니다. 기본값은 평탄화(flatten)된 배열 전체에 대해 최소값을 계산하는 것입니다.

3. out

결과를 저장할 대체 출력 배열입니다. 기본값은 None이며, 값을 지정하는 경우 예상되는 출력과 동일한 shape이어야 하고, 필요시 데이터 타입이 자동으로 캐스팅됩니다.

4. keepdims

True로 설정하면 차원이 감소된 축들이 크기 1의 차원으로 결과에 그대로 유지됩니다. 이 옵션을 사용하면 결과가 원래 배열에 대해 올바르게 브로드캐스팅(broadcasting)됩니다. 기본값이 아닌 값이 설정되면 keepdims는 ndarray 서브클래스의 max 메서드에 전달되며, 서브클래스가 keepdims를 구현하지 않으면 예외가 발생합니다.

5. 초기값 관련 매개변수

출력 요소의 최대값으로, 빈 슬라이스(empty slice)에 대한 연산을 수행할 수 있도록 반드시 존재해야 하는 값입니다.

구현 단계

먼저 필요한 라이브러리를 가져옵니다.

import numpy as np

array() 메서드를 사용하여 numpy 배열을 생성합니다. 정수형 요소에 nan과 NINF(음의 무한대)를 함께 추가했습니다.

arr = np.array([[25, 50, 75], [90, np.nan, np.NINF]])

배열을 화면에 출력해 확인합니다.

print("Our Array...\n",arr)

배열의 차원을 확인합니다.

print("\nDimensions of our Array...\n",arr.ndim)

배열 객체의 데이터 타입을 확인합니다.

print("\nDatatype of our Array object...\n",arr.dtype)

NaN을 무시하고 배열의 최소값을 반환하려면 numpy.nanmin() 메서드를 호출합니다.

print("\nResult (nanmin)...\n",np.nanmin(arr))

전체 예제 코드

import numpy as np

# array() 메서드로 numpy 배열 생성
# 정수형 요소에 nan과 NINF(음의 무한대)를 추가
arr = np.array([[25, 50, 75], [90, np.nan, np.NINF]])

# 배열 출력
print("Our Array...\n",arr)

# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)

# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)

# numpy.nanmin() 메서드로 NaN을 무시한 최소값 계산
print("\nResult (nanmin)...\n",np.nanmin(arr))

실행 결과

Our Array...
[[ 25. 50. 75.]
[ 90. nan -inf]]

Dimensions of our Array...
2

Datatype of our Array object...
float64

Result (nanmin)...
-inf

실행 결과를 보면 배열의 dtype은 float64로 변환되었으며, nanmin()은 NaN 값을 무시하고 나머지 요소들 중 최소값인 -inf(음의 무한대)를 정확히 반환했습니다. 일반적인 np.min() 함수를 사용하면 NaN 때문에 결과가 NaN으로 나오지만, nanmin()을 활용하면 결측값이 섞여 있는 데이터에서도 안전하게 최소값을 구할 수 있습니다.