在Python中重新填充NetCDF4

在Python中重新填充NetCDF4,python,numpy,Python,Numpy,我正在处理各种气候模型,但现在我正在重新将这些文件的纬度和经度从2.5x2.5降到0.5x0.5,我完全迷路了。我一直在运行Anaconda软件包来满足我所有的netCDF4需求,我已经取得了很好的进展,只是遗憾让我完全困惑。我使用的主要阵列有三个: 第一个是数据数组,一个包含降水信息的numpy数组。 第二个是lan_数组,一个包含纬度信息的numpy数组。 第三个是lot_数组,一个包含经度信息的numpy数组。 所有这些数据都来自netCDF4文件 同样,我的数据目前在2.5x2.5中。也

我正在处理各种气候模型,但现在我正在重新将这些文件的纬度和经度从2.5x2.5降到0.5x0.5,我完全迷路了。我一直在运行Anaconda软件包来满足我所有的netCDF4需求,我已经取得了很好的进展,只是遗憾让我完全困惑。我使用的主要阵列有三个:

第一个是数据数组,一个包含降水信息的numpy数组。
第二个是lan_数组,一个包含纬度信息的numpy数组。
第三个是lot_数组,一个包含经度信息的numpy数组。
所有这些数据都来自netCDF4文件

同样,我的数据目前在2.5x2.5中。也就是说,lonxlat目前是144x72。我使用np.meshgrid(lon_数组,lat_数组)将lonxlat设置为72。我的data_数组也包含72个元素,因此完全匹配

这就是我被卡住的地方,我不知道如何继续

我的想法是:我希望我的144x72转换为720x360,使其为0.5x0.5。 我知道创建我想要的lonxlat的一种方法是np.arange(-89.75,90.25,0.5)和np.arange(-179.75181.25,0.5)。但我不知道如何将数据数组与之匹配

有人能帮忙吗?非常感谢您的帮助


注意:我还可以使用ESMF模块。

一个简单的选项是nctoolkit()。它有一个名为
to_latlon
的内置方法,可以轻松实现您想要的功能。对于双线性插值,只需执行以下操作(其他方法请参见用户指南):


您需要使用Python吗?NCL的重新填充包非常适合这样做:是的,至少我更愿意这样做,因为我未来的工作仍然是在Python中。我看到NCL的包使用ESMF,我实际上可以在Python中访问ESMF。然后CDAT是Python的发展方向:我在前面查看了CDAT,并在Mac上下载了CDAT lite版本。问题是模块(cdms2和REGID2)都没有正确加载(我相信它们是ImageErrors?)。我会继续下载完整的软件包,希望一切顺利!祝你好运,有一天一定要看看NCL。在这种情况下,它将使您的生活更加轻松,并提供正确安装的良好说明。
import nctoolkit as nc
data = nc.open("infile.nc")
data.to_latlon(lon = [-179.75, 179.75], lat = [-89.75, 89.75], res = [0.5, 0.5])