Python Scipy单变量样本退出代码-某些情况下为1073741819
我使用scipy模块中的单变量样条拟合数据。它几乎适用于除此之外的所有情况,这会导致Python Scipy单变量样本退出代码-某些情况下为1073741819,python,scipy,spline,Python,Scipy,Spline,我使用scipy模块中的单变量样条拟合数据。它几乎适用于除此之外的所有情况,这会导致过程以退出代码-1073741819(0xC0000005)错误结束。如果我将平滑因子s更改为0,它也可以工作。任何解决这个问题的建议都会有帮助 更新1 我的工作环境是: python 3.7 scipy 1.3.2 numpy 1.17.4 您的s和k参数组合导致了问题 根据文档,节点数增加,直到条件sum((w[i]*(y[i]-spl(x[i]))**2,轴=0)达到某种程度,你是对的。但是,如果单
过程以退出代码-1073741819(0xC0000005)
错误结束。如果我将平滑因子s
更改为0,它也可以工作。任何解决这个问题的建议都会有帮助
更新1 我的工作环境是:
- python 3.7
- scipy 1.3.2
- numpy 1.17.4
您的
s
和k
参数组合导致了问题
根据文档,节点数增加,直到条件
sum((w[i]*(y[i]-spl(x[i]))**2,轴=0)达到某种程度,你是对的。但是,如果单变量样条算法不满足和((w[i]*(y[i]-spl(x[i])**2,axis=0)\u curfilt\u消息
)并返回近似结果。对于这种情况,它退出时没有零代码,我想可能是由于算法实现代码错误。如果我在y上附加4个零,它也可以工作,因此,可能不是因为太小的s
限制了有意义的数据点导致了退出问题。我认为这是单变量样本模块的一个缺陷。在我的测试中,如果我向y添加一个samll编号,例如eps=1e-5,则代码有效。
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import UnivariateSpline, InterpolatedUnivariateSpline
x = np.arange(78)
y = np.asarray([
0., 0., 0., 0., 0., 0.,
0., 0., 5.03989319, 4.03191455, 4.03191455, 3.02393591,
3.02393591, 2.01595727, 2.01595727, 1.00797864, 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.])
spl = UnivariateSpline(x, y, k=1, s=0.01)
knots = list(map(int, spl.get_knots()))
plt.plot(knots, y[knots], 'rx')
plt.plot(knots, y[knots], 'r-')
plt.plot(x, y, 'b-')
plt.show()