gpt4 book ai didi

python - 在二维网格 python 上插值

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:15 25 4
gpt4 key购买 nike

我在理解如何在网格上实现三次插值时遇到了一些小麻烦。我有 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

最佳答案

我想我设法使用 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)

关于python - 在二维网格 python 上插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com