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

Python numpy.nanmin()으로 NaN 무시하고 배열의 최솟값 구하기

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

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

1. a

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

2. axis

최솟값을 계산할 축 또는 축들의 집합입니다. 기본값은 None이며, 이 경우 평탄화(flattened)된 배열 전체에 대한 최솟값이 계산됩니다.

3. out

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

4. keepdims

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

구현 단계

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

import numpy as np

array() 메서드를 사용해 넘파이 배열을 생성합니다. 정수 타입 요소와 함께 nan 값을 포함시켰습니다.

arr = np.array([[10, 20, 30], [40, np.nan, 60]])

생성된 배열을 화면에 출력합니다.

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() 메서드로 넘파이 배열 생성
# 정수 타입 요소와 함께 nan 값 포함
arr = np.array([[10, 20, 30], [40, np.nan, 60]])

# 배열 출력
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을 무시한 최솟값 계산
# 지정된 축이 제거된 형태의 결과가 반환되며,
# 0차원 배열이거나 axis가 None이면 스칼라가 반환됨
print("\nResult (nanmin)...\n",np.nanmin(arr))

실행 결과

Our Array...
[[10. 20. 30.]
[40. nan 60.]]

Dimensions of our Array...
2

Datatype of our Array object...
float64

Result (nanmin)...
10.0

실행 결과를 보면 배열에 NaN 값이 포함되어 있어도 nanmin() 함수는 이를 무시하고 나머지 유효한 값들 중에서 최솟값인 10.0을 정상적으로 반환하는 것을 확인할 수 있습니다. 참고로 정수 요소만으로 배열을 생성했지만 nan이 포함되면서 dtype이 float64로 자동 변환된 점도 눈여겨볼 만합니다.