Я новый пользователь 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]