Joh*_*ney 4 python interpolation scipy
我想推断一个函数拟合。scipy.interpolate.interp1d应该能够做到这一点(请参阅doc片段)。相反,我得到“ ValueError:x_new中的值低于插值范围。”
使用:python 2.7.12,numpy 1.13.3,scipy 0.19.1
fill_value:类似数组或(类似数组,array_like)或“外推”,可选-如果是ndarray(或float),则此值将用于填充数据范围之外的请求点。如果未提供,则默认值为NaN。类阵列必须正确广播到非插值轴的尺寸。-如果是两个元素的元组,则第一个元素用作的填充值,
x_new < x[0]第二个元素 用作的填充值x_new > x[-1]。不是2元素元组的任何元素(例如list或ndarray,无论其形状如何)都被视为一个类似数组的自变量,意味着将两个边界都用作below, 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
Run Code Online (Sandbox Code Playgroud)
根据文档,除非指定时间或指定时间,否则interp1d默认情况下ValueError采用外推法。fill_value='extrapolate'bounds_error=False
In [1]: f1 = interp1d(t, x, kind='linear', fill_value=(0.5, 0.6), bounds_error=False)
In [2]: f1(0)
Out[2]: array(0.5)
Run Code Online (Sandbox Code Playgroud)