我是python的新用户。我有一个3D规则网格数据作为h5文件格式。我可以使用RegularGridInterpolator对我的数据进行插值(三线性插值)。但是,我不知道如何从我的插值函数中求导数。
(我的问题与How to get special derivative from an interpolated function类似,但似乎没有合适的解决方案,所以我想我应该再问一遍。)
实际上,我正在尝试对我的h5文件使用与这个问题相同的代码(How to get special derivative from an interpolated function)。我的h5文件可以从这个链接(https://drive.google.com/open?id=1cpnZBGDgbijAH0kJchcecTM5lKasiflp)下载。
期待专家的好意帮助。
我的代码:
import numpy as np
import h5py
import matplotlib.pyplot as plt
from scipy.interpolate import RegularGridInterpolator
f = h5py.File('k.h5', 'r')
list(f.keys())
dset = f[u'data']
dset.shape
dset.value.shape
dset[0:64,0:64,0:64]
x = np.linspace(-160, 160, 64)
y = np.linspace(-160, 160, 64)
z = np.linspace(-160, 160, 64)
my_interpolating_function = RegularGridInterpolator((x, y, z), dset.value)
pts = np.array([4.5, 15.3, 18.8])
my_interpolating_function(pts)发布于 2019-02-04 09:09:57
调用插值函数f(x,y,z),如果你想在(x,y,z)找到偏层df/dx,它就是f(floor(x+1),y,z) - f(floor(x),y,z)。导数并没有真正定义为x的整数值,因为它在这些点处发生变化。
这假设栅格具有单位间距。
沿着其他轴的偏导也是相似的。
https://stackoverflow.com/questions/54509004
复制相似问题