Я ищу эквивалентную команду Matlab
Vq = interp3(X,Y,Z,V,Xq,Yq,Zq)
в Питоне. В Matlab я могу использовать метод интерполяции «сплайн», который я не могу найти в python для 3D-данных. Существует scipy.interpolate.griddata, но у него нет опции сплайна для 3D-данных.
Данные, которые я хочу интерполировать, представляют собой трехмерную матрицу (51x51x51), которая регулярно распределяется по трехмерной сетке.
scipy.interpolate.Rbf может быть вариантом, но у меня он не работает:
xi = yi = zi = np.linspace(1, 132651, 132651)
interp = scipy.interpolate.Rbf(xi, yi, zi, data, function='cubic')
приводит к ошибке памяти.
Изменить: минимальный пример того, что я хочу (без интерполяции): код Matlab
v=rand([51,51,51]);
isosurface (v, 0.3);
Для простоты в этом примере я использую случайные данные. Я хочу сделать графики изоповерхностей (в частности, графики поверхности Ферми). Поскольку некоторые структуры очень маленькие, необходимо высокое разрешение сетки 51x51x51.
Еще один комментарий: набор данных в матрице не зависит друг от друга, z (или 3-й компонент) НЕ является функцией x и y.
interpolate.Rbf
?scipy
эквивалентноinterp3
, скорее всего, будетgriddata
, docs.scipy.org/doc/scipy-0.14.0/reference/generated/. - person atru   schedule 04.09.2017