Интерполировать большую нерегулярную сетку на другую нерегулярную сетку в Python

Я пытаюсь интерполировать сложные значения из одной неправильной сетки в другую неправильную сетку, используя Python. Сетки в 2D и 103,113 точек данных. Я использую Python 2.6.6, Scipy 0.7.2, Numpy 1.3.0, Matplotlib 0.99.3

В Matlab с использованием griddata это достигается примерно за 5 секунд.

BnGRID2  = griddata(R_GRID1,Z_GRID1,BnGRID1,R_GRID2,Z_GRID2) (MATLAB)

(Обратите внимание, что все массивы 201 x 513)

Однако, если я пытаюсь использовать matplotlib.mlab.griddata, я получаю memoryError, даже если я пытаюсь работать только с реальной частью:

mlab.griddata(R_GRID1.flatten(),Z_GRID1.flatten(),num.real(BnGRID1.flatten()),R_GRID2.flatten(),Z_GRID2.flatten())

Если я пытаюсь использовать interp2d, я получаю ошибку сегментации и Python завершает работу:

a = interp.interp2d(R_GRID1,Z_GRID1,num.real(BnGRID1))

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

Интересно, есть ли у кого-нибудь идеи, как я могу сделать это так быстро, как кажется Matlab? Я заметил, что в новой версии Scipy также есть griddata, кто-нибудь знает, может ли это обрабатывать большие нерегулярные сетки?

Ответы на вопрос(1)

Ваш ответ на вопрос