微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

许多点的二维插值列表

如何解决许多点的二维插值列表

这个问题之前有人问过(参见 [1][2]),但我还没有找到不涉及编写耗时的 for 循环的答案。我什至尝试以不同的方式构建问题(参见 [3]),但未能取得更好的结果。

我想在许多不同的点插入一个二维数组。我已经尝试过使用 Scipy interp2d,但是当您在 n 个点上调用结果函数时,它返回一个 nxn 矩阵,而不仅仅是 n 个值。

我需要一个非常快的解决方案,因为它会被调用数十万次,每次在数万个点上。

编辑:我的真实数据太大无法发布,但这是一个玩具示例:

# set up interpolation function
d = [[0,1,2,3],[0,2.5,3,4]]
s = [[0.5,0.5,0.5],[0.6,0.6,0.6]]
l = [[9,8,7,6,5],[9,5]]
fxn = interp2d(d,s,l)

# interpolate at list of points
# (same as input points in this example,not always true though)
print(fxn([1,1],0.6]))

结果是:

[[7.        7.        6.       ]
[8.        8.        7.2535014]
[8.        8.        7.2535014]]

当然,如果我取左对角线并根据输入值重新排序,我可以得到预期的答案 [8,8],但如果可以,我想避免这种计算开销。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。