NumPy 그라디언트 개요
NumPy의 np.gradient() 함수는 배열에 저장된 스칼라 함수의 샘플 값을 바탕으로 수치 그라디언트(미분값)를 계산합니다. 내부 지점에서는 2차 정확도의 중앙 차분(central difference) 방식을 사용하고, 경계 지점에서는 1차 또는 2차 정확도의 한쪽 차분(전진 또는 후진 차분)을 적용합니다. 따라서 반환되는 그라디언트는 입력 배열과 동일한 형태(shape)를 가집니다.
주요 매개변수
- f : 스칼라 함수의 샘플 값을 담고 있는 N차원 배열입니다.
- varargs : f 값 사이의 간격(spacing)으로, 기본값은 모든 차원에서 단위 간격(unitary spacing)입니다.
- edge_order({1, 2}) : 경계에서 N차 정확도의 차분을 사용하여 그라디언트를 계산하며, 기본값은 1입니다.
- axis : 지정된 축(또는 축들)에 대해서만 그라디언트를 계산합니다. 기본값인 axis=None은 입력 배열의 모든 축에 대해 그라디언트를 계산하며, 음수 값을 지정하면 마지막 축부터 첫 번째 축 순서로 해석됩니다.
이 메서드는 각 차원에 대해 f의 도함수에 해당하는 ndarray 목록을 반환하며, 각 도함수는 f와 동일한 형태를 가집니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
array() 메서드를 사용하여 NumPy 배열을 생성합니다. 이때 float 타입의 요소들을 추가했습니다.
arr = np.array([[20, 35, 57], [70, 85, 120]], dtype = float)
생성된 배열을 출력합니다.
print("Our Array...\n",arr)배열의 차원을 확인합니다.
print("\nDimensions of our Array...\n",arr.ndim)배열 객체의 데이터 타입을 확인합니다.
print("\nDatatype of our Array object...\n",arr.dtype)그라디언트는 내부 지점에서는 2차 정확도의 중앙 차분으로, 경계에서는 1차 또는 2차 정확도의 한쪽 차분으로 계산되며, 반환되는 그라디언트는 입력 배열과 동일한 형태를 가집니다.
print("\nResult (gradient)...\n",np.gradient(arr, axis = 1))전체 예제 코드
import numpy as np
# array() 메서드를 사용하여 NumPy 배열 생성
# float 타입의 요소들을 추가했습니다.
arr = np.array([[20, 35, 57], [70, 85, 120]], dtype = float)
# 배열 출력
print("Our Array...\n",arr)
# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)
# 내부 지점에서는 2차 정확도의 중앙 차분, 경계에서는 1차 또는 2차 정확도의
# 한쪽 차분을 사용하여 그라디언트를 계산합니다.
# 반환되는 그라디언트는 입력 배열과 동일한 형태를 가집니다.
print("\nResult (gradient)...\n",np.gradient(arr, axis = 1))실행 결과
Our Array... [[ 20. 35. 57.] [ 70. 85. 120.]] Dimensions of our Array... 2 Datatype of our Array object... float64 Result (gradient)... [[15. 18.5 22. ] [15. 25. 35. ]]