python - 许多点的二维插值列表
问题描述
之前已经提出过这个问题(参见[1]和[2]),但我还没有找到不涉及编写耗时for
循环的答案。我什至尝试过以不同的方式构造问题(参见[3]),但未能获得更好的结果。
我想在许多不同的点插入一个二维数组。我已经尝试过使用 Scipy interp2d
,但是当您在 n 个点上调用结果函数时,它会返回一个 nxn 矩阵而不仅仅是 n 个值。
我需要一个非常快的解决方案,因为它会被调用数十万次,每次数万个点。
编辑:我的真实数据太大而无法发布,但这是一个玩具示例:
# set up interpolation function
d = [[0, 0, 1, 2, 3], [0, 1, 2.5, 3, 4]]
s = [[0.5, 0.5, 0.5, 0.5, 0.5], [0.6, 0.6, 0.6, 0.6, 0.6]]
l = [[9,8,7,6,5],[9,8,7,6,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,2,1],[0.6,0.5,0.6]))
结果是:
[[7. 7. 6. ]
[8. 8. 7.2535014]
[8. 8. 7.2535014]]
当然,如果我取左对角线并根据输入值重新排序,我可以获得预期的答案[8, 6, 8]
,但如果可以的话,我想避免这种计算开销。
解决方案
推荐阅读
- java - 如何使用 JAVA 客户端获取 kubenetes 集群的内存 CPU 等指标
- mysql - 参数化 SQL 函数在特殊字符处截断变量
- python - 如何使用 Python Selenium 使用多进程池
- excel - 如何使用功能区按钮以只读方式打开外部 Excel 宏文件?
- google-apps-script - 使用 AppsScript 的 Dropbox API 中的 delete_batch 方法
- regex - sed -> 替换字符串中的固定文本和括号
- symfony - 如何使用 symfony5 的 LexikJWT 捆绑包通过用户名或电子邮件登录?
- c# - X509Certificate Decrypt Exceprion
- ios - 与 info.plist 具有类似行为的表单,当您单击 + 符号时,将出现两个字段作为键和值 [iOS Swift 5]
- intellij-idea - intellj有什么问题?