Python:interpolate.UnivariateSpline包'错误:(m> k)因隐藏m而失败:fpcurf0:m = 0'

Geo*_*e P 0 python interpolation scipy

我一直试图绘制一条线,以及样条拟合.以下是我的代码的通用版本.'x_coord'和'y_coord'是包含浮点值列表的列表.

import matplotlib.pyplot as plt
from scipy import interpolate as ipl

for a in range(len(x_coord)):
    plt.plot(x_coord[a],y_coord[a],label='Label')
    yinterp = ipl.UnivariateSpline(x_coord[a],y_coord[a],s=1e4)(x_coord[a])
    plt.plot(x_coord[a],yinterp,label='Spline Fit')
Run Code Online (Sandbox Code Playgroud)

虽然我认为这在过去对我有用,但现在我收到一条错误消息:

/.../Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy/interpolate/fitpack2.pyc in __init__(self, x, y, w, bbox, k, s, ext)
    165 
    166         data = dfitpack.fpcurf0(x,y,k,w=w,
--> 167                                 xb=bbox[0],xe=bbox[1],s=s)
    168         if data[-1] == 1:
    169             # nest too small, setting to maximum bound

error: (m>k) failed for hidden m: fpcurf0:m=0 
Run Code Online (Sandbox Code Playgroud)

我已经看到类似错误消息的情况(例如dfitpack.error:(m> k)因隐藏的m:fpcurf0:m = 1而失败),只是在那种特殊情况下似乎存在涉及字典的问题,其中没有一个用于我的代码.

关于这个问题的任何建议将不胜感激.

ev-*_*-br 7

您正尝试UnivariateSpline使用零长度数组实例化对象

    >>> from scipy.interpolate import UnivariateSpline
    >>> UnivariateSpline([], [])
    <snip>
    dfitpack.error: (m>k) failed for hidden m: fpcurf0:m=0
    >>> 
    >>> UnivariateSpline([1], [2])
    Traceback (most recent call last):
   <snip>
    dfitpack.error: (m>k) failed for hidden m: fpcurf0:m=1
Run Code Online (Sandbox Code Playgroud)

该错误很可能由此行触发,该行将隐藏变量m设置为长度x并检查您至少有k+1哪些点k是样条度(默认为立方,k = 3).

>>> spl = UnivariateSpline(range(4), range(4))
>>> spl(2)
array(2.0)
Run Code Online (Sandbox Code Playgroud)