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

Python NumPy – NaN을 0으로 처리하고 결과 데이터 타입을 지정하여 배열 요소의 누적 합계 구하기

주어진 축(axis)을 따라 배열 요소의 누적 합계를 계산하면서 NaN을 0으로 처리하려면 NumPy의 nancumsum() 메서드를 사용합니다. 이 메서드는 NaN을 만나더라도 누적 합계가 변하지 않으며, 배열 앞부분에 위치한 NaN은 0으로 대체됩니다. 또한 모든 요소가 NaN이거나 비어 있는 슬라이스에는 0을 반환합니다.

nancumsum()의 주요 매개변수

첫 번째 매개변수는 누적 합계를 계산할 입력 배열입니다.

두 번째 매개변수는 누적 합계를 계산할 축입니다. 기본값(None)인 경우 평탄화된(flattened) 배열 전체에 대해 누적 합계를 계산합니다.

세 번째 매개변수는 반환되는 배열과 중간 계산에 사용되는 누산기(accumulator)의 데이터 타입(dtype)입니다. dtype을 지정하지 않으면 입력 배열 a의 dtype이 기본값으로 사용되지만, a가 기본 플랫폼 정수보다 낮은 정밀도의 정수 dtype을 가질 경우 기본 플랫폼 정수가 대신 사용됩니다.

네 번째 매개변수는 결과를 저장할 대체 출력 배열로, 예상 출력과 동일한 shape와 버퍼 길이를 가져야 하며 필요에 따라 타입이 캐스팅됩니다.

단계별 구현 방법

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

import numpy as np

array() 메서드를 사용해 numpy 배열을 생성합니다. 여기에 nan과 함께 int 타입의 요소를 추가했습니다 −

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을 0으로 처리하면서 주어진 축을 따라 배열 요소의 누적 합계를 반환하려면 nancumsum() 메서드를 사용합니다. 이때 dtype 매개변수를 int로 지정하면 원래 float64였던 결과가 정수형으로 변환됩니다 −

print("\nCumulative Sum of array elements...\n",np.nancumsum(arr, axis = 1, dtype = int))

전체 예제 코드

import numpy as np

# array() 메서드를 사용해 numpy 배열 생성
# nan과 함께 int 타입의 요소를 추가
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을 0으로 처리하며 축을 따라 누적 합계 계산
# dtype=int로 결과 데이터 타입 지정
print("\nCumulative Sum of array elements...\n",np.nancumsum(arr, axis = 1, dtype = int))

실행 결과

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

Dimensions of our Array...
2

Datatype of our Array object...
float64

Cumulative Sum of array elements...
[[ 10 30 60]
[ 40 40 100]]

위 실행 결과에서 볼 수 있듯이, 입력 배열의 nan 값은 0으로 처리되어 누적 합계에 영향을 주지 않았습니다. 또한 dtype을 int로 지정했기 때문에 결과 배열이 부동소수점(float64)이 아닌 정수형으로 반환된 것을 확인할 수 있습니다.