【问题标题】:Python: interpolate.UnivariateSpline package 'error: (m>k) failed for hidden m: fpcurf0:m=0'Python:interpolate.UnivariateSpline 包'错误:(m>k)因隐藏 m 失败:fpcurf0:m=0'
【发布时间】:2015-08-27 03:15:33
【问题描述】:

我一直在尝试绘制一条线以及一个样条拟合。以下是我的代码的通用版本。 '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')

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

/.../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 

我见过类似错误消息的案例(例如dfitpack.error: (m>k) failed for hidden m: fpcurf0:m=1),只是在那种特殊情况下似乎存在涉及字典的问题,而我的代码中没有使用这些问题。

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

【问题讨论】:

    标签: python scipy interpolation


    【解决方案1】:

    您正在尝试使用零长度数组实例化 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
    

    错误可能是由this line 触发的,它将隐藏变量m 设置为x 的长度并检查您是否至少有k+1 点,其中k 是样条度数(默认为立方,k=3)。

    >>> spl = UnivariateSpline(range(4), range(4))
    >>> spl(2)
    array(2.0)
    

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多