У меня есть ndarray (Z) с примерно 500000 элементов на прямоугольной сетке (X, Y).
Теперь я хочу интерполировать значения примерно в 100 местах по x, y, которые не обязательно находятся в сетке.
У меня есть код, работающий в Matlab:
data = interp2(X,Y,Z, x,y);
Однако, когда я пытаюсь использовать тот же подход с scipy.interpolate, я получаю различные ошибки в зависимости от метода. Например, interp2d завершается ошибкой MemoryError, если я указываю kind = 'linear'
, и "OverflowError: слишком много точек данных для интерполяции", если я указываю kind='cubic'
. Я также пробовал Rbf
и bisplev
, но они тоже не работают.
Итак, вопрос: существует ли функция интерполяции, которая позволяет интерполировать большие матрицы? Есть ли другое решение проблемы? (Или мне нужно написать функцию, которая выбирает подходящую область вокруг точек для интерполяции и затем вызывает interp2d?)
Кроме того: Как это сделать с комплексными числами?