如何解决Python外推错误
我正在尝试对2D数据进行插值,但始终收到错误could not convert string to float: 'extrapolate'
。我很确定发生错误的值不在插值所用的时间间隔内。
我只是发布我的特定示例,因为为了帮助我解决错误,您不需要了解我使用的某些功能。
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将自动推断间隔附近/外部的数据。但是,即使对于fill_value = 'nan'
(我读过的书应该会导致自动推断),这也不起作用。
问候
费利克斯
解决方法
改为尝试
f = interp2d(v_coarse,M_coarse,C_prime_true,kind='linear',bounds_error = False)
您的代码然后打印
[0.39339549]
fill_value
应该省略,或者每个this中的数字而不是字符串
还有另一件事-如果您想将默认值显式传递给fill-value
,则不是fill_value = 'nan'
而是fill_value = None
,这是在Python中传递空值的方式(而'nan'
只是一个字符串)。您仍然需要bounds_error = False
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。