scipy interp1d外推方法fill_value =元组不起作用

时间:2017-10-21 00:14:01

标签: python scipy interpolation

我想推断一个函数拟合。 scipy.interpolate.interp1d应该能够做到这一点(参见doc snippet)。 相反,我得到" ValueError:x_new中的值低于插值范围。"

使用:python 2.7.12,numpy 1.13.3,scipy 0.19.1

  

fill_value:类似数组或(数组类似,array_like)或&#34;外推&#34;,可选       - 如果是ndarray(或浮点数),这个值将用于填写        请求的数据范围之外的点。如果没有提供,那么        默认值为NaN。像数组一样必须正确播放        非插补轴的尺寸。       - 如果是一个双元素元组,则第一个元素用作a        填充x_new < x[0]的值,第二个元素用于        x_new > x[-1]。任何不是2元素元组的东西(例如,        列表或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

1 个答案:

答案 0 :(得分:3)

根据documentationinterp1d默认提取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)