Python 在二维网格上插值

Python 在二维网格上插值,python,grid,2d,interpolation,Python,Grid,2d,Interpolation,我很难理解如何在网格上实现三次插值。 我在一维数组中存储了25个大小值。每个值表示单元格内的数字。因此,值显示在5x5 imshow图像上,其中25个结果单元格中的每一个都代表我存储的值 我已经在imshow上成功地使用了内置的插值参数,但我真的很想返回插值的结果 data = 1D numpy array with 25 values imshow(data .reshape(5, 5), origin='upper', interpolation='lanczos', cmap=cm.jet

我很难理解如何在网格上实现三次插值。 我在一维数组中存储了25个大小值。每个值表示单元格内的数字。因此,值显示在5x5 imshow图像上,其中25个结果单元格中的每一个都代表我存储的值

我已经在imshow上成功地使用了内置的插值参数,但我真的很想返回插值的结果

data = 1D numpy array with 25 values
imshow(data .reshape(5, 5), origin='upper', interpolation='lanczos', cmap=cm.jet)
我试着使用这个内置的scipy插值函数,但是我不知道这真的是最好的方法

from scipy.interpolate import griddata
grid_x, grid_y = np.mgrid[0:4:100j, 0:4:200j]
grid_z2 = griddata(np.array([arange(5), arange(5)]).T, data, (grid_x, grid_y), method='cubic')
我收到一个ValueError,其值和点数不同。如果这不是我能够使用其他方法的最佳方式

Traceback (most recent call last):
File "file.py", line 100, in <module>
grid_z2 = griddata(np.array([arange(5), arange(5)]).T, data, (grid_x, grid_y), method='cubic')
File "C:\Program Files\Anaconda\lib\site-packages\scipy\interpolate\ndgriddata.py", line 212, in griddata
rescale=rescale)
File "scipy\interpolate\interpnd.pyx", line 840, in scipy.interpolate.interpnd.CloughTocher2DInterpolator.__init__ (scipy\interpolate\interpnd.c:9953)
File "scipy\interpolate\interpnd.pyx", line 78, in scipy.interpolate.interpnd.NDInterpolatorBase.__init__ (scipy\interpolate\interpnd.c:2342)
File "scipy\interpolate\interpnd.pyx", line 121, in scipy.interpolate.interpnd.NDInterpolatorBase._check_init_shape (scipy\interpolate\interpnd.c:3085)
ValueError: different number of values and points  
回溯(最近一次呼叫最后一次):
文件“File.py”,第100行,在
grid_z2=griddata(np.array([arange(5),arange(5)]).T,data,(grid_x,grid_y),method='cubic')
griddata中的文件“C:\Program Files\Anaconda\lib\site packages\scipy\interpolate\ndgriddata.py”,第212行
重新缩放=重新缩放)
文件“scipy\interpolate\interpnd.pyx”,第840行,在scipy.interpolate.interpnd.CloughTocher2DInterpolator.\uuuuu init\uuuuu(scipy\interpolate\interpnd.c:9953)中
文件“scipy\interpolate\interpind.pyx”,第78行,在scipy.interpolate.interpolatorbase.\uuuu init\uuuuu中(scipy\interpolate\interpind.c:2342)
文件“scipy\interpolate\interpolatorbase.\u check\u init\u shape(scipy\interpolate\interpold.c:3085)中的第121行“scipy\interpolate\interpold.pyx”
ValueError:值和点数不同

我想我设法使用interpolate.RectBivariateSpline来满足我的目的。 以下是完整的代码:

from scipy import interpolate

x = arange(5)
y = arange(5)
sp_x = interpolate.RectBivariateSpline(x, y, data)

nx = linspace(0, 4, 50)
ny = linspace(0, 4, 50)
n_data = sp_x(nx, ny)

请发布完整错误traceback@JulienSpronck对此表示抱歉,已编辑以反映您的请求。在回溯中,您看到的是
square\u mag[:,2]
而不是
数据
。。。由于
square\u mag[:,2]
不是5x5,因此可能会出现错误array@Julien我更正了我原来的帖子。正方形mag[:,2]与数据相同。为了简单起见,我改了名字。