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

Python NumPy diff() 함수로 n차 이산 차분 계산하기

numpy.diff() 메서드를 사용하면 n차 이산 차분(n-th discrete difference)을 손쉽게 계산할 수 있습니다. 첫 번째 차분은 지정된 축을 따라 out[i] = a[i+1] - a[i]로 정의되며, 그보다 높은 차수의 차분은 diff를 재귀적으로 적용하여 구합니다.

diff() 메서드는 n차 차분 결과를 반환합니다. 출력 배열의 형태(shape)는 axis 축을 제외하면 입력 배열 a와 동일하고, 해당 축의 크기만 n만큼 줄어듭니다. 출력의 데이터 타입은 배열 a의 임의의 두 요소 간 차이 타입과 같으며, 대부분의 경우 a의 타입과 일치합니다. 단, datetime64 타입은 예외적으로 timedelta64 타입의 출력 배열을 생성한다는 점에 유의해야 합니다.

주요 매개변수

  • 첫 번째 매개변수 : 차분을 계산할 입력 배열입니다.
  • 두 번째 매개변수(n) : 차분을 반복 적용할 횟수입니다. 0을 지정하면 입력 배열이 그대로 반환됩니다.
  • 세 번째 매개변수(axis) : 차분을 계산할 축입니다. 기본값은 마지막 축입니다.
  • 네 번째 매개변수 : 차분 연산을 수행하기 전에 지정한 축을 따라 입력 배열의 앞 또는 뒤에 덧붙일 값입니다. 스칼라 값은 axis 방향으로 길이 1인 배열로 확장되며, 나머지 모든 축에서는 입력 배열의 형태를 따릅니다.

구현 단계

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

array() 메서드를 사용해 NumPy 배열을 생성합니다. 여기에는 int 타입 요소와 함께 nan(결측값)도 포함시켰습니다.

arr = np.array([10, 15, 30, 65, 80, 87, np.nan])

생성된 배열을 출력해 확인합니다.

print("Our Array...\n",arr)

배열의 차원을 확인합니다.

print("\nDimensions of our Array...\n",arr.ndim)

배열 객체의 데이터 타입을 확인합니다.

print("\nDatatype of our Array object...\n",arr.dtype)

numpy.diff() 메서드를 사용해 n차 이산 차분을 계산합니다. 첫 번째 차분은 지정된 축을 따라 out[i] = a[i+1] - a[i]로 정의되며, 더 높은 차수의 차분은 diff를 재귀적으로 적용해 계산됩니다.

print("\nDiscrete difference..\n",np.diff(arr))

전체 예제 코드

import numpy as np

# Creating a numpy array using the array() method
# We have added elements of int type with nan
arr = np.array([10, 15, 30, 65, 80, 87, np.nan])

# Display the array
print("Our Array...\n",arr)

# Check the Dimensions
print("\nDimensions of our Array...\n",arr.ndim)

# Get the Datatype
print("\nDatatype of our Array object...\n",arr.dtype)

# To calculate the n-th discrete difference, use the numpy.diff() method
# The first difference is given by out[i] = a[i+1] - a[i] along the given axis, higher differences are calculated by using diff recursively.

print("\nDiscrete difference..\n",np.diff(arr))

실행 결과

Our Array...
[10. 15. 30. 65. 80. 87. nan]

Dimensions of our Array...
1

Datatype of our Array object...
float64

Discrete difference..
[ 5. 15. 35. 15. 7. nan]