복합 사다리꼴 규칙(Composite Trapezoidal Rule)을 사용하여 지정한 축을 따라 수치 적분을 수행하려면 numpy.trapz() 메서드를 사용합니다. x가 제공되면 해당 요소들의 순서대로 적분이 진행되며, 요소들은 별도로 정렬되지 않습니다. 이 메서드는 사다리꼴 규칙에 따라 단일 축 방향으로 근사한 n차원 배열 'y'의 정적분 값을 반환합니다. 'y'가 1차원 배열이면 결과는 float 형태이고, 차원이 1보다 크면 결과는 'n-1'차원 배열이 됩니다.
첫 번째 매개변수 y는 적분할 입력 배열입니다. 두 번째 매개변수 x는 y 값에 대응하는 샘플 포인트로, None이면 샘플 포인트가 dx 간격으로 균등하게 배치되어 있다고 가정하며 기본값은 None입니다. 세 번째 매개변수 dx는 x가 None일 때 샘플 포인트 사이의 간격이며 기본값은 1입니다. 네 번째 매개변수 axis는 적분을 수행할 축을 의미합니다.
참고: 최신 NumPy 버전에서의 변경 사항
NumPy 2.0부터는 trapz()가 지원 중단(deprecated)되었으며, 동일한 기능을 제공하는 numpy.trapezoid() 사용이 권장됩니다. 호출 방식과 결과는 완전히 동일합니다.
단계
먼저 필요한 라이브러리를 임포트합니다 −
import numpy as np
arange() 메서드를 사용해 numpy 배열을 생성합니다. 여기에는 int 타입의 요소들을 담았습니다 −
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)
복합 사다리꼴 규칙을 사용해 지정한 축을 따라 적분하려면 numpy.trapz() 메서드를 사용합니다 −
print("\nResult (trapz)...\n",np.trapz(arr, axis = 0))
예제
import numpy as np
# arange() 메서드를 사용해 numpy 배열을 생성합니다
# int 타입의 요소를 추가했습니다
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)
# 복합 사다리꼴 규칙을 사용해 축 0을 따라 적분합니다
print("\nResult (trapz)...\n",np.trapz(arr, axis = 0))
출력 결과
Our Array... [[0 1 2] [3 4 5] [6 7 8]] Dimensions of our Array... 2 Datatype of our Array object... int64 Result (trapz)... [ 6. 8. 10.]
실행 결과를 보면 축 0(열 방향)을 따라 적분했을 때 각 열마다 [6., 8., 10.]이 계산됩니다. 예를 들어 첫 번째 열 [0, 3, 6]의 경우 (0+3)/2 + (3+6)/2 = 6이 되는 방식입니다. 이처럼 trapz()는 인접한 샘플 값들로 만든 사다리꼴의 넓이를 모두 더해 정적분을 근사합니다.