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

파이썬 scipy.interpolate.interp1d() – 1차원 함수 보간 방법과 예제

scipy.interpolate 패키지의 interp1d() 함수는 1차원(1-D) 함수를 보간(interpolation)할 때 사용됩니다. 이 함수는 x와 y 배열을 입력받아 y = f(x) 형태의 함수를 근사한 뒤, 보간을 통해 새로운 지점에서의 함수값을 계산합니다.

문법(Syntax)

scipy.interpolate.interp1d(x, y)

여기서 x는 실수 값으로 구성된 1차원 배열이며, y는 N차원 실수 배열입니다. 보간이 수행되는 축을 따른 y의 길이는 반드시 x의 길이와 동일해야 합니다.

주요 매개변수

  • x : 독립 변수에 해당하는 실수 값의 1차원 배열
  • y : 종속 변수에 해당하는 N차원 실수 배열
  • kind : 보간 방식을 지정합니다. 'linear'(기본값), 'nearest', 'zero', 'slinear', 'quadratic', 'cubic' 등을 사용할 수 있습니다.
  • fill_value : x 범위를 벗어난 지점에서 반환할 값을 지정합니다.

예제 1

다음 예제를 살펴보겠습니다.

# 필요한 라이브러리 임포트
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 값 정의
x = np.arange(0, 10)
y = np.exp(-x/5.0)

# 입력 데이터
plt.subplot(1, 2, 1)
plt.title("Input X and Y")
plt.plot(x, y)

# 보간된 데이터
plt.subplot(1, 2, 2)
plt.title("Interpolated")
f = interpolate.interp1d(x, y)
x_new = np.arange(0, 7, 0.7)
y_new = f(x_new)
plt.plot(x_new, y_new, 's')

plt.show()

출력 결과

위 프로그램을 실행하면 다음과 같은 그래프가 출력됩니다.

파이썬 scipy.interpolate.interp1d() – 1차원 함수 보간 방법과 예제

예제 2

이번에는 또 다른 예제를 살펴보겠습니다.

# 필요한 라이브러리 임포트
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 값 정의
x = np.arange(0, 10)
y = np.exp(-x ** 2 / 9.0)

# 보간 함수 생성
f = interpolate.interp1d(x, y)
xnew = np.arange(0, 9, 1.2)
plt.plot(x, y, 'o', xnew)

plt.show()

출력 결과

위 프로그램을 실행하면 다음과 같은 그래프가 출력됩니다.

파이썬 scipy.interpolate.interp1d() – 1차원 함수 보간 방법과 예제

참고 사항

SciPy 1.10 버전부터 interp1d는 레거시(legacy) API로 분류되었습니다. 새로운 프로젝트에서는 numpy.interp, scipy.interpolate.make_interp_spline, CubicSpline 등의 대체 함수 사용이 권장되지만, 기존 코드와의 호환성을 위해 interp1d는 여전히 널리 활용되고 있습니다.