首页 > 解决方案 > 使用 interpolate.splrep 输入数据错误

问题描述

我定义了两个数组:

x = array([ 0. , 50. , 55.5, 57.5, 55.5, 50. ,  0. ])
y = array([ 2.5,  2.5,  4.7, 10. , 15.3, 17.5, 17.5])

然后我用命令进行插值:

import numpy as np
from scipy import interpolate
tck = interpolate.splrep(x, y)

这给了我错误信息:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/scipy/interpolate/fitpack.py", line 289, in splrep
res = _impl.splrep(x, y, w, xb, xe, k, task, s, t, full_output, per, quiet)
File "/usr/lib/python3/dist-packages/scipy/interpolate/_fitpack_impl.py", line 515, in splrep
raise _iermess[ier][1](_iermess[ier][0])
ValueError: Error on input data

为什么输入的数据不正确?问题出在哪里?

标签: python-3.xinterpolationspline

解决方案


欢迎来到堆栈溢出!

我对 SciPy 不熟悉,但我去看了它的文档和对 function 的描述scipy.interpolate.splrep()。有一句话说:

用户负责确保 x 的值是唯一的。否则, splrep 将不会返回合理的结果。

但是您的x数组中有许多相同的值。也许这就是您收到错误消息的原因?


推荐阅读