从 scipy.interpolate.InterpolatedUnivariateSpline 中捕获 dfitpack.error
Catch dfitpack.error from scipy.interpolate.InterpolatedUnivariateSpline
我正在对一个数组进行插值,但有可能我没有足够的节点来进行插值。在这种情况下,我需要调整平滑样条的程度。在下面给出的最小工作示例中,如果 N = 3
.
就是这种情况
from scipy.interpolate import InterpolatedUnivariateSpline
import numpy as np
N = 10 # is working fine
# N = 3 # produces error
x = np.linspace(-3, 3, N)
y = np.exp(-x**2) + 0.1 * np.random.randn(N)
spline = InterpolatedUnivariateSpline(x, y, bbox=[x[0],x[-1]], k=3, ext=0)
x_full = np.linspace(-3,3,10*N)
yspline = spline(x_full)
错误,如果N=3
是
error: (m>k) failed for hidden m: fpcurf0:m=3
。
与 and here 描述的错误相同。我知道这个错误是什么意思,也知道为什么会出现,这不是问题所在。
我想写一篇try/except来捕捉这个案例并妥善处理。
这是什么<ErrorType>
?
try:
spline = InterpolatedUnivariateSpline(x, y, bbox=[x[0],x[-1]], k=3, ext=0)
yspline = spline(x_full)
except <ErrorType>:
print('something')
(我知道我可以改为编写一个 if/else
语句来检查 x
和 y
的长度。我会记住这一点作为替代方案。但要知道,它最好使用 try/except
语句。)
干杯,
安吉拉
except Exception
。虽然通常被认为是不好的形式(出于某种原因!),但它会在这里工作。
我正在对一个数组进行插值,但有可能我没有足够的节点来进行插值。在这种情况下,我需要调整平滑样条的程度。在下面给出的最小工作示例中,如果 N = 3
.
from scipy.interpolate import InterpolatedUnivariateSpline
import numpy as np
N = 10 # is working fine
# N = 3 # produces error
x = np.linspace(-3, 3, N)
y = np.exp(-x**2) + 0.1 * np.random.randn(N)
spline = InterpolatedUnivariateSpline(x, y, bbox=[x[0],x[-1]], k=3, ext=0)
x_full = np.linspace(-3,3,10*N)
yspline = spline(x_full)
错误,如果N=3
是
error: (m>k) failed for hidden m: fpcurf0:m=3
。
与
我想写一篇try/except来捕捉这个案例并妥善处理。
这是什么<ErrorType>
?
try:
spline = InterpolatedUnivariateSpline(x, y, bbox=[x[0],x[-1]], k=3, ext=0)
yspline = spline(x_full)
except <ErrorType>:
print('something')
(我知道我可以改为编写一个 if/else
语句来检查 x
和 y
的长度。我会记住这一点作为替代方案。但要知道,它最好使用 try/except
语句。)
干杯, 安吉拉
except Exception
。虽然通常被认为是不好的形式(出于某种原因!),但它会在这里工作。