Есть ли способ оптимизировать python interp2d для достижения более быстрого результата? - PullRequest
0 голосов
/ 04 февраля 2020

Я построил следующий код в 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')

Тем не менее, я бегал это в течение часа, и он все еще не закончен. Я провел тесты с небольшими наборами данных, поэтому я знаю, что код работает.

Я также создал следующий код математики, который предположительно делает то же самое

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

И для его выполнения даже не требуется одной секунды. Разница во времени между двумя языками слишком велика. Может кто-нибудь посоветовать мне, как сделать более быстрый python код?

...