首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >评估沿曲线的scipy 2D插值的输出

评估沿曲线的scipy 2D插值的输出
EN

Stack Overflow用户
提问于 2017-11-03 09:31:39
回答 3查看 2K关注 0票数 4

我从2D函数f的网格点x, y处采样了数据z,就像在z = f(x, y)中一样。

使用scipy.interp2d通过f = interp2d(x, y, zf进行插值很容易)。

但是,计算f(x, y)会返回整个2D网格,就好像我已经这样做了一样

代码语言:javascript
复制
xx, yy = np.meshgrid(x, y)
f(xx, yy)

我想要的行为是简单地返回值[f(x[i], y[i]) for i in range(len(x))],我相信这是numpy中几乎任何其他方法的行为。

我想要这种行为的原因是,我正在寻找一对(t, u(t))在“时间”上沿着f表面所描绘出的路径。

同样令人惊讶的是,np.diag(f(t, u(t)))不同于np.array([f(ti, u(ti)) for ti in t]),所以我不清楚如何从interp2d返回的内容中获取路径f(t, u(t))

编辑:关于diag,我只是觉得我们应该有np.diag(f(t, u(t))) == np.array([f(ti, u(ti)) for ti in t]),但事实并非如此。

完整示例:

代码语言:javascript
复制
def f(t, u):
    return (t**2) * np.exp((u**2) / (1 + u**2))

x = np.linspace(0, 1, 250)
xx, yy = np.meshgrid(x, x)

z = f(xx, yy)
f = scipy.interpolate.interp2d(x, y, z)

print(f(x, y))
print(np.array([f(xi, yi)[0] for xi, yi in zip(x, y)]))

我希望两个print语句的输出是相同的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47087109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档