NumPy 누적 함수: cumsum과 cumprod
NumPy는 파이썬에서 과학 계산을 수행하기 위한 강력한 라이브러리로, 다양한 수학적, 통계적 함수들을 제공합니다. 오늘은 그중에서도 누적 함수(cumsum, cumprod) 에 대해 알아보고, 이를 활용한 다양한 예제를 살펴보겠습니다.
누적 함수란?
누적 함수는 배열의 각 원소에 대해 이전 원소의 연산 결과를 누적하여 계산한 결과를 반환하는 함수입니다. 이를 통해 데이터의 누적 합계나 누적 곱을 구할 수 있습니다.
cumsum: 누적 합
cumsum
은 배열의 원소를 순차적으로 더한 값을 반환합니다. 예를 들어, 배열 [1, 2, 3, 4]
에 대해 cumsum
을 적용하면 [1, 3, 6, 10]
이 됩니다.
cumprod: 누적 곱
cumprod
는 배열의 원소를 순차적으로 곱한 값을 반환합니다. 동일한 배열 [1, 2, 3, 4]
에 대해 cumprod
를 적용하면 [1, 2, 6, 24]
가 됩니다.
이 함수들은 데이터 분석, 통계 계산, 시계열 데이터 처리 등 다양한 분야에서 유용하게 활용됩니다.
NumPy cumsum과 cumprod 사용법
1. 기본 사용법
import numpy as np
# 예제 데이터 생성
data = np.array([1, 2, 3, 4])
# 누적 합 계산
cumsum_result = np.cumsum(data)
print("누적 합:", cumsum_result)
# 누적 곱 계산
cumprod_result = np.cumprod(data)
print("누적 곱:", cumprod_result)
실행 결과:
누적 합: [ 1 3 6 10]
누적 곱: [ 1 2 6 24]
2. 다차원 배열에서의 동작
cumsum
과 cumprod
는 다차원 배열에서도 사용할 수 있으며, 이 경우 연산 방향(축)을 지정할 수 있습니다.
예제:
# 2D 배열 생성
data_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 축 0 (세로 방향)으로 누적 합 계산
cumsum_axis0 = np.cumsum(data_2d, axis=0)
print("축 0 누적 합:\n", cumsum_axis0)
# 축 1 (가로 방향)으로 누적 곱 계산
cumprod_axis1 = np.cumprod(data_2d, axis=1)
print("축 1 누적 곱:\n", cumprod_axis1)
실행 결과:
축 0 누적 합:
[[ 1 2 3]
[ 5 7 9]
[12 15 18]]
축 1 누적 곱:
[[ 1 2 6]
[ 4 20 120]
[ 7 56 504]]
3. 마스킹된 배열에서의 누적 함수
NumPy는 np.ma
모듈을 통해 마스킹된 배열에서도 누적 연산을 지원합니다.
예제:
import numpy.ma as ma
# 마스킹된 배열 생성
data = ma.array([1, 2, 3, 4], mask=[False, True, False, False])
# 누적 합 계산
cumsum_masked = ma.cumsum(data)
print("마스킹된 누적 합:", cumsum_masked)
# 누적 곱 계산
cumprod_masked = ma.cumprod(data)
print("마스킹된 누적 곱:", cumprod_masked)
실행 결과:
마스킹된 누적 합: [1 -- 4 8]
마스킹된 누적 곱: [1 -- 3 12]
4. 실전 예제: 시계열 데이터 누적 계산
누적 함수는 시계열 데이터의 누적 합계나 누적 성과를 계산하는 데 자주 사용됩니다.
예제:
# 주식 가격 변화율 데이터 (예제)
price_changes = np.array([0.01, 0.02, -0.005, 0.01])
# 누적 수익률 계산
cumulative_returns = np.cumprod(1 + price_changes) - 1
print("누적 수익률:", cumulative_returns)
실행 결과:
누적 수익률: [0.01 0.0302 0.024692 0.034938]
5. 데이터 시각화
cumsum
과 cumprod
를 활용한 데이터를 시각화하면 더욱 직관적으로 이해할 수 있습니다.
예제:
import matplotlib.pyplot as plt
# 데이터 생성
data = np.random.randint(1, 10, size=10)
cumsum_result = np.cumsum(data)
# 시각화
plt.plot(data, label="원본 데이터", marker='o')
plt.plot(cumsum_result, label="누적 합", marker='o')
plt.xlabel("Index")
plt.ylabel("Value")
plt.title("cumsum 예제")
plt.legend()
plt.grid()
plt.show()
마무리
NumPy의 cumsum
과 cumprod
함수는 간단하면서도 강력한 기능을 제공합니다. 이 함수들은 데이터의 누적 합계나 곱을 손쉽게 계산할 수 있도록 도와주며, 다양한 응용 사례에 활용될 수 있습니다. 앞으로 데이터 분석이나 시계열 처리 작업을 할 때 유용하게 사용해 보세요!
'Python > NumPy' 카테고리의 다른 글
NumPy 난수 생성 (random 모듈 사용) (0) | 2025.10.09 |
---|---|
NumPy를 활용한 수학적 함수 적용 (0) | 2025.10.07 |
NumPy를 활용한 통계 계산: mean, median, std, var 등 (0) | 2025.10.06 |
NumPy 배열의 반복 및 타일링 (tile, repeat) (0) | 2025.10.05 |
NumPy 배열의 연결과 분리 (concatenate, split) (0) | 2025.10.04 |