Python Scipy插值警告信息

4

我正在尝试使用scipy interpolate将一些2D数据拟合为样条曲面

from scipy import interpolate

使用
 # fit spline to surface
 xnew, ynew = np.mgrid[x[0]:x[-1]:100j, y[0]:y[-1]:100j]
 tck = interpolate.bisplrep(X, Z, array)
 znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck)

但是我收到了以下警告信息:
C:\Users...\AppData\Local\Continuum\Anaconda3\lib\site-packages\scipy\interpolate_fitpack_impl.py:975: 运行时警告:在使用fp = s进行平滑样条拟合时出现了理论上不可能的结果。可能的原因是s太小或eps选择不当。(abs(fp-s)/s>0.001) kx,ky=3,3 nx,ny=16,18 m=610 fp=18417275715.663498 s=575.071502 warnings.warn(RuntimeWarning(_iermess2[ierm][0] + _mess)) C:\Users...\AppData\Local\Continuum\Anaconda3\lib\site-packages\scipy\interpolate_fitpack_impl.py:975: 运行时警告:所需存储空间超过可用存储空间。可能的原因是nxest或nyest太小或s太小。(fp>s) kx,ky=3,3 nx,ny=20,20 m=610 fp=661.198585 s=575.071502 warnings.warn(RuntimeWarning(_iermess2[ierm][0] + _mess)) C:\Users...\AppData\Local\Continuum\Anaconda3\lib\site-packages\scipy\interpolate_fitpack_impl.py:975: 运行时警告:所需存储空间超过可用存储空间。可能的原因是nxest或nyest太小或s太小。(fp>s) kx,ky=3,3 nx,ny=20,20 m=610 fp=1013.605606 s=575.071502 warnings.warn(RuntimeWarning(_iermess2[ierm][0] + _mess))

我希望得到类似于我的数据的东西:样本数据

但我得到了这个:样条输出

我承认我不知道警告信息的含义,也没有在互联网上找到任何有用的信息。

1个回答

3
似乎您的输入数据包含的数据点太少了?另一个问题可能是您的 xy 轴具有非常不同的数量级。我不知道这是否会对 bisplrep 造成问题,但其他插值算法不喜欢这样的情况。
我使用scipy.interpolate.Rbf 更成功,它还提供了非常平滑的结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接