我有一个 3D 数组,我需要使用 Python 进行数值积分。我的阵列是波长、深度和时间的函数。这是我使用另一个软件包进行数字建模的数据,没有函数的分析形式,只是另一个包的 3d 数组输出。我需要找到这个数组的三重积分。在 Matlab 中,我使用 trapz(my_array, 3) 其中 3 是要集成的 ndim。Scipy trapz 似乎只适用于单个积分。
我想我可能有两个选择,但我需要一些建议。
选择 1. 在 scipy 中使用 3d 插值返回函数句柄,这些存在吗?1d 版本返回一个函数,然后使用 scipy.integrate.tplquad 对插值函数进行积分,其中我使用数组中的最大值和值作为积分限制。
选择 2. 使用三个嵌套的 trapz 调用,就像我在另一个站点上找到的 2d 建议一样。--> sp.trapz(sp.trapz(f, y[np.newaxis,:], axis=1), x, axis=0))
不能完全让我的头脑使任何一个工作。任何帮助/建议将不胜感激。我需要确保我的集成错误尽可能低。