Python SciPy.interpolate.griddata()的快速替代方案

Python SciPy.interpolate.griddata()的快速替代方案,python,numpy,scipy,interpolation,linear-algebra,Python,Numpy,Scipy,Interpolation,Linear Algebra,我需要将interpolate.griddata应用于时间序列数据;对于很长的时间序列,每个时间步一次。下面是我试图加速的代码。n,m 为了加快计算速度,我可以牺牲精度和性能。我会考虑把这个非网格数据投影到一个精细网格(带有SARCES条目),然后插入缺失值,如果这意味着我可以利用NUMPY矩阵运算。 如果首选方法不可行,我可以将p个时间步骤拆分为许多并行过程 请注意,每个时间步的x和y都是固定的。如果我可以提取一个时间步的系数来填充我的网格,那么我可以将这些相同的系数应用于所有时间步。这将大大

我需要将interpolate.griddata应用于时间序列数据;对于很长的时间序列,每个时间步一次。下面是我试图加速的代码。n,m

为了加快计算速度,我可以牺牲精度和性能。我会考虑把这个非网格数据投影到一个精细网格(带有SARCES条目),然后插入缺失值,如果这意味着我可以利用NUMPY矩阵运算。 如果首选方法不可行,我可以将p个时间步骤拆分为许多并行过程

请注意,每个时间步的x和y都是固定的。如果我可以提取一个时间步的系数来填充我的网格,那么我可以将这些相同的系数应用于所有时间步。这将大大简化和加速计算,但是我对正在应用的插值方法(CloughTocher2DInterpolator)了解不够


注意:这是作为Azure函数部署的。循环是独立的,可以并行运行,但是我不熟悉Azure函数的并行处理功能。

这取决于数据的详细信息,但是对于这种令人尴尬的并行工作,
多处理
模块通常是一种很好的方法。是的,循环可以并行运行。不过,我希望避免for循环,这样numpy就可以使用优化的c代码来处理实现。有一些工具可以跨数组的维度运行函数,例如,但它们通常可以归结为该轴上的Python循环,或者只在1D数组上工作,或者有其他缺点。与
多处理并行化
非常简单,因此我建议尝试一下,看看它是否满足您的性能要求。我用多处理实现了它,并在本地运行。它在多处理时运行较慢。对于每个步骤t,启动新流程的开销太大。
pressures = np.zeros((n, m, p))
for t in range(p):
    pressures[:, :, t] = interpolate.griddata((x, y), p[t], (xx, yy))