为了账号安全,请及时绑定邮箱和手机立即绑定

重新网格化 Python xarray 坐标

重新网格化 Python xarray 坐标

胡子哥哥 2022-07-12 15:53:02
您可以通过迭代字典中的每个项目来做到这一点,但是在大型数据集中它可能效率低下。def get_key(data, query):    for key, value in data.items():        if query in value[0][1]:            return key    return 'Not Found'get_key(dictonary, word)然后,即使您的查找未能找到匹配项,您也可以调用您的函数并返回结果。# Note i changed the name of the dictionary to dicton, as dict shouldn't be used as a variable nameprint(get_key(dicton, 'three'))print(get_key(dicton, 'seven'))print(get_key(dicton, 'four'))#a#Not Found#b我有一些 0.2 度和 1 度分辨率的虚拟数据。我想对 foo 进行二次采样,使其与 foo1 的比例相同。有什么简单的方法可以以某种方式平均和重新排列我的经纬度坐标吗?import pandas as pdimport xarray as xrimport matplotlib.pyplot as plt#Set at 0.2 degree grids ishfreq=20lats=240lons=1020time=pd.date_range('2000-01',periods=freq,freq='Y')data=np.random.rand(freq,lats,lons)lat=np.linspace(-19.5,19.5,lats)lon=np.linspace(120,290,lons)foo = xr.DataArray(data, coords=[time, lat,lon], dims=['time', 'lat','lon'])foo.sel(time='2005',method='nearest').plot()plt.show()#Set at 1 degree gridsfreq1=20lats1=40 #Factor of 6 differencelons1=170time1=pd.date_range('2000-01',periods=freq1,freq='Y')data1=np.random.rand(freq1,lats1,lons1)lat1=np.linspace(-19.5,19.5,lats1)lon1=np.linspace(120,290,lons1)foo1 = xr.DataArray(data1, coords=[time1, lat1,lon1], dims=['time', 'lat','lon'])foo1.sel(time='2005',method='nearest').plot()plt.show()
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

Xarray 可以线性插值纬度和经度,就好像它们是笛卡尔坐标一样(如上面的示例),但这与适当的地理重新网格化不同。为此,您可能想查看xesmf



查看完整回答
反对 回复 2022-07-12
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我决定最简单的方法是使用 foo1 网格进行解释。


因此:


foo2=foo.interp(lat=lat1).interp(lon=lon1)

foo2.sel(time='2005',method='nearest').plot()

应生成准确的子采样网格图。


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信