개요
주어진 축을 따라 복합 사다리꼴 규칙(composite trapezoidal rule)으로 수치 적분을 수행하려면 numpy.trapz() 메서드를 사용합니다. x 값이 제공되면 배열 요소 순서대로 적분이 진행되며, 요소들이 정렬되지 않은 상태라도 그대로 사용됩니다.
이 메서드는 사다리꼴 규칙으로 단일 축을 따라 근사한 n차원 배열 'y'의 정적분(definite integral) 값을 반환합니다. 'y'가 1차원 배열이면 결과는 float 형태의 스칼라가 되고, 차원이 n(n > 1)이라면 결과는 'n-1'차원 배열이 됩니다.
참고로 NumPy 2.0부터는 np.trapz()가 np.trapezoid()로 이름이 변경되었으므로, 최신 버전을 사용한다면 np.trapezoid()를 호출하는 것이 좋습니다.
매개변수 정리
1번째 매개변수 y : 적분할 입력 배열입니다.
2번째 매개변수 x : y 값에 대응하는 샘플 포인트(샘플 좌표)입니다. x가 None이면 샘플 포인트는 dx 간격으로 균등하게 배치되어 있다고 가정합니다. 기본값은 None입니다.
3번째 매개변수 dx : x가 None일 때 샘플 포인트 사이의 간격입니다. 기본값은 1입니다.
4번째 매개변수 axis : 적분을 수행할 축입니다.
단계별 구현
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
arange() 메서드로 NumPy 배열을 생성하고, int 타입의 요소를 추가한 뒤 3x3 형태로 재구성합니다.
arr = np.arange(9).reshape(3, 3)
배열을 출력해 확인합니다.
print("Our Array...\n",arr)배열의 차원을 확인합니다.
print("\nDimensions of our Array...\n",arr.ndim)배열의 데이터 타입을 확인합니다.
print("\nDatatype of our Array object...\n",arr.dtype)복합 사다리꼴 규칙으로 지정한 축(axis=1)을 따라 적분하기 위해 numpy.trapz() 메서드를 사용합니다.
print("\nResult (trapz)...\n",np.trapz(arr, axis = 1))전체 예제 코드
import numpy as np
# arange() 메서드로 NumPy 배열 생성
# int 타입의 요소를 추가하고 3x3 형태로 재구성
arr = np.arange(9).reshape(3, 3)
# 배열 출력
print("Our Array...\n",arr)
# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)
# 복합 사다리꼴 규칙으로 axis=1 방향 적분 수행
print("\nResult (trapz)...\n",np.trapz(arr, axis = 1))실행 결과
Our Array... [[0 1 2] [3 4 5] [6 7 8]] Dimensions of our Array... 2 Datatype of our Array object... int64 Result (trapz)... [ 2. 8. 14.]
실행 결과를 보면 각 행(row)마다 axis=1 방향으로 사다리꼴 적분이 수행되어 [2., 8., 14.]라는 1차원 결과 배열이 반환된 것을 확인할 수 있습니다. 예를 들어 첫 번째 행 [0, 1, 2]의 경우 간격이 1이므로 (0+1)/2 + (1+2)/2 = 2가 됩니다.