python - RectBivariateSpline 仅产生平滑>0 的 nan 值

标签 python scipy

使用 RectBivariateSpline 对 2D 图像(原始数据如下所示)进行插值,如果平滑为 0,我会得到插值,但如果我将平滑设置为非零值,即使是 0.001,结果也仅包含 nan 值。我的“图像”是一个 1000x800 的网格,由 0~14 的数字组成。

from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x=np.arange(img.shape[1])
y=np.arange(img.shape[0])
X, Y = np.meshgrid(x,y)
fig=plt.figure(1)
for smooth in [0,.001,.01,.1]:
    plt.clf()
    plt.cla()
    ax=fig.add_subplot(111,projection='3d')
    bvspl=interpolate.RectBivariateSpline(x,y,np.transpose(img),s=smooth)
    print(np.min(bvspl(x,y)),np.max(bvspl(x,y)))
    ax.plot_surface(X,Y,np.transpose(bvspl(x,y)))
    fig.savefig(path+str(smooth)+'_3d.png')

打印语句的结果是: -2.15105711021e-15 14.3944312333 楠楠 楠楠 楠楠

plot of surface

最佳答案

就我而言,我只是在插值之前将所有缺失值设置为 -9999。插值后,我再次将所有负值设置为缺失值 - 是的,我会丢失边界上的信息,但这就是我到目前为止所能做的。我也在寻找另一种快速准确的解决方案。

关于python - RectBivariateSpline 仅产生平滑>0 的 nan 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35519929/

相关文章:

Python:小数转换成时间格式

python seek() 和 read() 以不同方式计算文件位置

python - 如何读取 csv 文件直到找到标题?

python - 在写入 HTML 文件之前尝试用一个变量替换另一个变量

Python - 在 2D numpy 数组中查找特定值的最大面积的有效方法

python - scipy imsave 保存错误的值

python - Python(和 Flask)中的非消息队列/简单长轮询

python - Scipy 期望函数未给出预期输出

python - 通过索引访问 coo_matrix 时出现类型错误

python - 如何将 2 矩阵放入 scipy.optimize.minimize?