Интерполировать массив вдоль первой оси с помощью scipyPython

Программы на Python
Гость
Интерполировать массив вдоль первой оси с помощью scipy

Сообщение Гость »


Я изо всех сил пытаюсь выполнить простую линейную интерполяцию куба данных размера Nx*Ny*Nz в новый, который сохранял бы постоянные два других измерения, т.е. результирующий результат был бы Nxnew*Ny* НЗ. Кажется, что RegularGridInterpolator из scipy - это лучший вариант, хотя мне непонятно, как генерировать входные данные.

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

from scipy.interpolate import RegularGridInterpolator
import numpy as np

x = np.linspace(1,4,11)
y = np.linspace(4,7,22)
z = np.linspace(7,9,33)
V = np.zeros((11,22,33))
for i in range(11):
for j in range(22):
for k in range(33):
V[i,j,k] = 100*x[i] + 10*y[j] + z[k]
fn = RegularGridInterpolator((x,y,z), V)
pts = np.array([[[[2,6,8],[3,5,7]], [[2,6,8],[3,5,7]]]])
out = fn(pts)
print(out, out.shape)

In this mwe, I'd like to use new points xnew = np.linspace(2,3,50), while keeping y and z the same, so the resulting array becomes of shape (50,22,33). Also, how would one generalize this to an interpolation along 1 dimension for an n-dimensional array, while keeping the rest of the coordinates the same?


Источник: https://stackoverflow.com/questions/781 ... with-scipy

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