二维直方图的样条插值 - Python
Spline Interpolation of a 2D Histogram - Python
我有一个 2D 直方图(x、y 坐标和“权重”),我需要进行样条插值并提取数据(因此不仅是图形),我该如何使用 python ? (我在这里附上 histo)谢谢! LightMap X_Z
你可以使用scipy,我从here中提取了以下示例并稍作修改:
from scipy import interpolate
import matplotlib.pyplot as plt
# define range of x values
x = np.arange(-5.01, 5.01, 0.25)
# define range of z values
z = np.arange(-5.01, 5.01, 0.25)
# create a meshgrid
xx, zz = np.meshgrid(x, z)
# these weights would be given to you in your histogram - here is an example function to generate weights
weights = np.sin(xx**2+zz**2)
# create interpolation object
f = interpolate.interp2d(x, z, weights, kind='cubic')
# generate new ranges of x and z values
xnew = np.arange(-5.01, 5.01, 1e-2)
znew = np.arange(-5.01, 5.01, 1e-2)
# interpolate
weightsnew = f(xnew, znew)
# plot
plt.imshow(weightsnew)
plt.show()
我有一个 2D 直方图(x、y 坐标和“权重”),我需要进行样条插值并提取数据(因此不仅是图形),我该如何使用 python ? (我在这里附上 histo)谢谢! LightMap X_Z
你可以使用scipy,我从here中提取了以下示例并稍作修改:
from scipy import interpolate
import matplotlib.pyplot as plt
# define range of x values
x = np.arange(-5.01, 5.01, 0.25)
# define range of z values
z = np.arange(-5.01, 5.01, 0.25)
# create a meshgrid
xx, zz = np.meshgrid(x, z)
# these weights would be given to you in your histogram - here is an example function to generate weights
weights = np.sin(xx**2+zz**2)
# create interpolation object
f = interpolate.interp2d(x, z, weights, kind='cubic')
# generate new ranges of x and z values
xnew = np.arange(-5.01, 5.01, 1e-2)
znew = np.arange(-5.01, 5.01, 1e-2)
# interpolate
weightsnew = f(xnew, znew)
# plot
plt.imshow(weightsnew)
plt.show()