【问题标题】:passing a tuple to fill_value in scipy.interpolate.interp1d results in ValueError将元组传递给 scipy.interpolate.interp1d 中的 fill_value 会导致 ValueError
【发布时间】:2016-05-05 14:14:06
【问题描述】:

scipy.interpolate.interp1d (v0.17.0) 中的 docs 对可选的 fill_value 参数表示以下内容:

fill_value : ... 如果是双元素元组,则第一个元素用作 x_new

因此我在这段代码中传递了一个二元素元组:

N=100
x=numpy.arange(N)
y=x*x
interpolator=interp1d(x,y,kind='linear',bounds_error=False,fill_value=(x[0],x[-1]))
r=np.arange(1,70)
interpolator(np.arange(1,70))

但它会抛出 ValueError:

ValueError: shape mismatch: value array of shape (2,) could not be broadcast to indexing result of shape (0,1)

谁能指出我在这里做错了什么? 提前感谢您的帮助。

【问题讨论】:

    标签: scipy linear-interpolation


    【解决方案1】:

    这是一个已在当前开发版本中修复的错误:

    >>> N = 100
    >>> x = np.arange(N)
    >>> y = x**2
    >>> from scipy.interpolate import interp1d
    >>> iii = interp1d(x, y, fill_value=(-10, 10), bounds_error=False)
    >>> iii(-1)
    array(-10.0)
    >>> iii(101)
    array(10.0)
    >>> scipy.__version__
    '0.18.0.dev0+8b07439'
    

    话虽如此,如果您想要的只是左右两侧的填充值的线性插值,您可以使用np.interp 直接。

    【讨论】:

    • 谢谢一百万,我不知道 np.interp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多