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

Python NumPy np.gradient()로 N차원 배열의 기울기(그래디언트) 계산하기

NumPy의 np.gradient() 함수는 내부 지점에서는 2차 정확도의 중앙 차분(central difference)을 사용하고, 경계 지점에서는 1차 또는 2차 정확도의 한쪽 방향 차분(forward 또는 backward difference)을 사용하여 기울기를 계산합니다. 따라서 반환되는 그래디언트는 입력 배열과 동일한 형태(shape)를 가집니다.

np.gradient()의 주요 매개변수

첫 번째 매개변수 f: 스칼라 함수의 샘플 값을 담고 있는 N차원 배열입니다.

두 번째 매개변수 varargs: f 값들 사이의 간격(spacing)을 의미하며, 기본값은 모든 차원에 대해 1입니다.

세 번째 매개변수 edge_order {1, 2}: 경계에서 N차 정확도의 차분을 사용해 그래디언트를 계산합니다. 기본값은 1입니다.

네 번째 매개변수 axis: 지정된 축(axis)을 따라서만 그래디언트를 계산합니다. 기본값인 axis=None일 경우 입력 배열의 모든 축에 대해 그래디언트를 계산합니다. axis는 음수 값도 가질 수 있으며, 이 경우 마지막 축부터 첫 번째 축 순으로 거꾸로 계산됩니다.

이 메서드는 각 차원에 대한 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))

전체 예제 코드

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차 정확도의 중앙 차분, 경계에서는 한쪽 방향 차분을 사용해
# 그래디언트를 계산하며, 결과는 입력 배열과 동일한 형태로 반환됩니다.
print("\nResult (gradient)...\n",np.gradient(arr))

실행 결과

Our Array...
[ 20. 35. 57. 70. 85. 120.]

Dimensions of our Array...
1

Datatype of our Array object...
float64

Result (gradient)...
[15. 18.5 17.5 14. 25. 35.]