Saya ingin mengekstrapolasi fungsi yang cocok. scipy.interpolate.interp1d seharusnya dapat melakukan ini (lihat cuplikan dokumen). Sebaliknya saya mendapatkan "ValueError: Nilai dalam x_new berada di bawah rentang interpolasi."
Menggunakan: python 2.7.12, numpy 1.13.3, scipy 0.19.1
fill_value : seperti array atau (seperti array, seperti_array) atau "ekstrapolasi", opsional - jika ndarray (atau float), nilai ini akan digunakan untuk mengisi titik yang diminta di luar rentang data. Jika tidak disediakan, maka defaultnya adalah NaN. Bentuk seperti array harus disiarkan dengan benar ke dimensi sumbu non-interpolasi. - Jika tuple dua elemen, maka elemen pertama digunakan sebagai nilai isian untuk
x_new < x[0]
dan elemen kedua digunakan untukx_new > x[-1]
. Apa pun yang bukan tupel 2 elemen (mis., list atau ndarray, apa pun bentuknya) dianggap sebagai argumen mirip array yang dimaksudkan untuk digunakan pada kedua batasan sebagaibelow, above = fill_value, fill_value
.
import numpy as np
from scipy.interpolate import interp1d
# make a time series
nobs = 10
t = np.sort(np.random.random(nobs))
x = np.random.random(nobs)
# compute linear interp (with ability to extrapolate too)
f1 = interp1d(t, x, kind='linear', fill_value='extrapolate') # this works
f2 = interp1d(t, x, kind='linear', fill_value=(0.5, 0.6)) # this doesn't