有没有一种方法可以优化python的interp2d以获得更快的结果?

时间:2020-02-04 10:06:36

标签: python wolfram-mathematica interpolation

我已经在python中构建了以下代码。它从文本文件中读取三列,第一列是一系列X位置,第二列是一系列Y位置,第三列是X和Y的函数的值,然后根据可用的值构造插值函数点。

import csv
import numpy as np
from scipy.interpolate import interp2d
f = open('XdataTXT.txt','r')
linesX=f.readlines()
X_column_number = 0
positionX=[]
Y_column_number = 1
positionY=[]
WindX_column_number=2
windX=[]
for x in linesX:
positionX.append(float( x.split()[X_column_number]))
positionY.append(float(x.split()[Y_column_number]))
windX.append(float(x.split()[WindX_column_number]))
f.close()

windXInterpFunc = interp2d(positionX, positionY, windX, kind='cubic')

但是,我已经运行了一个小时,但还没有完成。我已经用较小的数据集进行了测试,所以我知道代码可以工作。

我还构造了下面的mathematica代码,据称它们也可以做到

windXMat = Transpose[{XposX, YposX, windXVal}];
ifuncEPSX = Interpolation[windXMat //. {x_List} :> x];

执行甚至不需要一秒钟。两种语言之间的时间差太大。有人可以向我推荐如何执行更快的python代码吗?

0 个答案:

没有答案