在Python上使用GRIDDATA的未知内插方法数组 [英] Unknown interpolation method array using griddata on PYTHON
本文介绍了在Python上使用GRIDDATA的未知内插方法数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经花了两天时间寻找答案,但我总是遇到同样的错误,我不明白为什么。无论我做什么,我都会收到错误"ValueError:未知的一维数据内插方法数组"
我正在尝试使用网格数据将值插值到更精细的网格
以下是我的代码
import numpy as np
lon_ww3=array([[-10. , -10. , -10. , -10. , -10. , -10. , -10. , -10. , -10. ],
[ -9.5, -9.5, -9.5, -9.5, -9.5, -9.5, -9.5, -9.5, -9.5],
[ -9. , -9. , -9. , -9. , -9. , -9. , -9. , -9. , -9. ],
[ -8.5, -8.5, -8.5, -8.5, -8.5, -8.5, -8.5, -8.5, -8.5]])
lat_ww3=array([[ 38. , 38.5, 39. , 39.5, 40. , 40.5, 41. , 41.5, 42. ],
[ 38. , 38.5, 39. , 39.5, 40. , 40.5, 41. , 41.5, 42. ],
[ 38. , 38.5, 39. , 39.5, 40. , 40.5, 41. , 41.5, 42. ],
[ 38. , 38.5, 39. , 39.5, 40. , 40.5, 41. , 41.5, 42. ]])
Z=np.random.random_sample((4,9))*3
#Create finer mesh grid
lon_pn=[-10,-9]
lat_pn=[38,42]
lon_points=np.arange(lon_pn[0],lon_pn[1]+(300./3600),300./3600)[:-1]
lat_points=np.arange(lat_pn[0],lat_pn[1]+(300./3600),300./3600)[:-1]
LON_grid,LAT_grid=np.meshgrid(lon_points,lat_points)
from scipy.interpolate import griddata
Z_interp=griddata(lon_ww3.ravel(),lat_ww3.ravel(), Z.ravel(),LON_grid,LAT_grid)
我也试过了,显然没有成功:
Z_interp=griddata(lon_ww3.ravel(),lat_ww3.ravel(), Z.ravel(),lon_points,lat_points)
我能想到的几乎每一种可能的变化...每次我都收到相同的错误:
"ValueError:第n维数据的未知内插方法数组[LON_GRID]"
有人能尝试复制代码并帮助我找出发生了什么吗?
提前谢谢
保罗
推荐答案
您的griddata用法错误。
将这些行添加到您的代码示例中。
xi = np.c_[lon_ww3.ravel(),lat_ww3.ravel()]
xx = np.c_[LON_grid.ravel(),LAT_grid.ravel()]
Z_interp=griddata(xi,Z.ravel(),xx)
xi
是原始网格点的n,D
向量。
xx
是插值点的N,D
向量。
np.c_
是坐标每个方向的列堆栈。
这篇关于在Python上使用GRIDDATA的未知内插方法数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文