Python 外推错误

Python extrapolation errror

我正在尝试对 2D 数据进行插值,但一直收到错误 could not convert string to float: 'extrapolate'。我很确定我得到的错误值不在我用于插值的间隔之外。

我只是 post 我的具体示例,因为为了帮助我解决错误,您不需要理解我使用的特定功能。

from scipy.interpolate import interp2d
import numpy as np
import scipy.stats as si
import math as m

def C_prime_function(M,v):
    return si.norm.cdf(M/v + v/2) - m.exp(-M)*si.norm.cdf(M/v - v/2)
    
C_prime_function_vectorized = np.vectorize(C_prime_function)

x_coarse = np.arange(0.000001,5.5,0.5)
y_coarse = np.arange(-0.5,0.6,0.1)
v_coarse, M_coarse = np.meshgrid(x_coarse,y_coarse)
C_prime_true = C_prime_function_vectorized(M_coarse,v_coarse)

f = interp2d(v_coarse,M_coarse,C_prime_true,kind='linear',fill_value='extrapolate')

print(f(0.000001,0.5))

所以我想 fill_value = 'extrapolate' Python 会自动推断出 near/outside 间隔的数据。但即使对于 fill_value = 'nan'(我读到的应该会导致自动外推),这也行不通。

问候

菲利克斯

试试这个

f = interp2d(v_coarse,M_coarse,C_prime_true,kind='linear',bounds_error = False)

你的代码然后打印

[0.39339549]
根据 this

fill_value 应该被省略或一个数字,而不是一个字符串

还有一件事——如果你想明确地将默认值传递给fill-value,它不是fill_value = 'nan'而是fill_value = None,这是传递空值的方式Python(而 'nan' 只是一个字符串)。你仍然需要 bounds_error = False 不过