Нарисуйте результат RegularGridInterpolation (3D-интерполяция для данных Regular Grid) в Python - PullRequest
0 голосов
/ 12 января 2019

Я новый пользователь Python, и я создал небольшой файл h5, а затем прочитал его с помощью h5py и затем использовал функцию #RegularGridInterpolator для интерполяции данных RegularGrid для заданных значений (x, y, z), и это работает Что ж. Теперь я хочу сделать простой 3D-график для моего результата интерполяции, рассматривая некоторые ближайшие значения, чтобы графически увидеть, как работают любые 3D-интерполяции. Можете ли вы помочь мне сделать это? Я даю здесь мой код для вашего любезного рассмотрения. Спасибо.

код для создания файла h5:

import numpy as np
import h5py

def f(x,y,z):
   return 2 * x**3 + 3 * y**2 - z

x = np.linspace(-2, 2, 4)
y = np.linspace(-2, 2, 4)
z = np.linspace(-2, 2, 4)
mesh_data = f(*np.meshgrid(x, y, z, indexing='ij', sparse=True))

h5file = h5py.File('interpolate_test.h5', 'w')
h5file.create_dataset('/x', data=x)
h5file.create_dataset('/y', data=y)
h5file.create_dataset('/z', data=z)
h5file.create_dataset('/mesh_data', data=mesh_data)

h5file.close()

код для чтения файла h5 и интерполяции:

import numpy as np
from scipy.interpolate import RegularGridInterpolator
import h5py

fl = h5py.File('interpolate_test.h5')
list(fl.keys())
data = fl[u'mesh_data']
data.shape
data.dtype
data[0:4, 0:4, 0:4]

x = fl['x'][:]
y = fl['y'][:]
z = fl['z'][:]
mesh_data = fl['mesh_data'][:,:,:]

my_interpolating_function = RegularGridInterpolator((x, y, z), mesh_data)

pts = np.array([-1, -1.5, 1])
print (my_interpolating_function(pts))

Результат найден: [2.55555556]

...