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

Python NumPy – NaN을 1로 처리하여 축 0 기준 배열 요소의 누적 곱 반환하기

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

이 메서드는 기본적으로 결과를 담은 새로운 배열을 반환하지만, out 매개변수가 지정된 경우에는 해당 배열에 결과가 저장되어 그대로 반환됩니다. 누적 곱은 5 → 5×10 → 5×10×15 → 5×10×15×20과 같은 방식으로 순차적으로 계산됩니다.

nancumprod() 메서드의 주요 매개변수

  • 첫 번째 매개변수: 입력 배열입니다.
  • 두 번째 매개변수(Axis): 누적 곱을 계산할 축입니다. 기본값으로는 입력 배열이 평탄화(flatten)된 상태에서 계산됩니다.
  • 세 번째 매개변수(dtype): 반환되는 배열의 데이터 타입이자, 요소들을 곱하는 누산기(accumulator)의 타입입니다. dtype이 지정되지 않으면 입력 배열 a의 dtype을 기본으로 사용하되, a의 정수 타입 정밀도가 플랫폼 기본 정수보다 낮은 경우에는 플랫폼 기본 정수 타입이 대신 사용됩니다.
  • 네 번째 매개변수(out): 결과를 저장할 대체 출력 배열입니다. 예상 출력과 동일한 형태(shape)와 버퍼 길이를 가져야 하며, 필요한 경우 결과 값의 타입은 자동으로 캐스팅됩니다.

구현 단계

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

import numpy as np

array() 메서드를 사용해 numpy 배열을 생성합니다. 여기에는 int 타입 요소들과 함께 nan이 포함되어 있습니다.

arr = np.array([[5, 10, 15], [20, np.nan, 30]])

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

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

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

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

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

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

nancumprod() 메서드를 사용하여 주어진 축(axis = 0)을 따라 배열 요소의 누적 곱을 계산합니다. NaN은 1로 처리되며, 결과를 담은 새로운 배열이 반환됩니다.

print("\nCumulative Product of array elements...\n",np.nancumprod(arr, axis = 0))

전체 예제 코드

import numpy as np

# array() 메서드를 사용해 numpy 배열 생성
# int 타입 요소들과 함께 nan 포함
arr = np.array([[5, 10, 15], [20, np.nan, 30]])

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

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

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

# nancumprod() 메서드로 NaN을 1로 처리하며 축 0 기준 누적 곱 계산
print("\nCumulative Product of array elements...\n",np.nancumprod(arr, axis = 0))

실행 결과

Our Array...
[[ 5. 10. 15.]
[20. nan 30.]]

Dimensions of our Array...
2

Datatype of our Array object...
float64

Cumulative Product of array elements...
[[ 5. 10. 15.]
[100. 10. 450.]]