Множественная одномерная интерполяция в двумерном массиве без циклаPython

Программы на Python
Anonymous
Множественная одномерная интерполяция в двумерном массиве без цикла

Сообщение Anonymous »

У меня есть массив np с ndim = 2. Мне нужно выполнить выборку интерполированных значений по одному измерению, и я хотел бы сделать это максимально эффективно.
Я придумал это решение:

Код: Выделить всё

for i in range(my_array.shape[0]):
my_interp_array[i, :] = np.interp(sample_y , np.arange(array_size_y), my_array[i,:])
... где sample_y представляет собой некоторый неэквидистантный вектор выборки. Хотя это дает желаемый результат, это, вероятно, очень неэффективное решение.
Я также попробовал scipy.interpolate.interp1d, как это было предложено другими, например:< /p>

Код: Выделить всё

y = np.arange(array_size_y)  # equidistant sampling vector
intf = interp1d(y, my_array)  # interpolation function
my_interp_array = intf(np.tile(sample_y, (len(y), 1)))
... но на самом деле это занимает в >3000 раз больше времени, чем первая идея с циклом for, что меня смущает.
Есть ли у кого-нибудь идеи, как как это улучшить и почему интерполяция scipy у меня настолько медленная?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/787 ... thout-loop

Вернуться в «Python»