我正在用Python编写一些软件,允许用户在任意数量的维度上运行涉及简单的加法和乘法以及插值的模拟。在此过程中,函数必须在N维网格上重复(并顺序)添加,乘法和插值。我必须在循环中执行此操作,因为在每次迭代中结果都依赖于前一次迭代(它们不可并行化)。在一维情况下,它看起来像
T = 1000000000
b = 0
for t in range(T):
b = b * f(b) + np.random.randn()
b = b + f(b)
其中上面代码中的f
是由用户提供的数据和网格创建的插值。在每次迭代中,使用相同的插值。
首先想到的是使用numba
来加速循环。但是,为了能够在N维网格上进行插值,我必须使用scipy.interpolate.RegularGridInterpolator
,但使用此功能会阻止我在numba
模式下运行nopython
。我知道有this package允许更快的插值,但我不确定我是否可以在nopython
模式下使用它。另外,我想知道是否还有其他选择来克服这个瓶颈?非常感谢任何帮助。