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
不过
我正在尝试对 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
不过