我正在使用xarray来读取陆地表面模型的大气数据。压缩的netcdf文件存储在一个文件夹中,每个文件夹变量在2018年的每一天都有一个文件。下面的示例中有365 * 3个文件。
使用class Flags(Enum):
TRAIN = 'train'
TEST = 'test'
VALIDATION = 'validation'
UNIFIED = 'unified'
打开该文件夹中的所有文件,然后设置实际需要的时间。这样,代码就不依赖文件的任何命名约定来选择正确的时间段,因为我可以从netcdf属性中读取该时间段。我的理解是,我可以使用xarray读取任意数量的文件,因为只有在调用ds.read()后才真正读取数据。
但是,下面的示例需要2-3分钟来读取文件,例如一个月。 动作的示例和顺序有什么根本上的错误,还是真的这么慢?
该代码非常关键,因为所读取的数据用于传播模型,并且此后需要读取新数据才能继续下一个时间块。我知道,简单地使用netcdf4可能会更快,但我希望保留xarray的便利性并使其尽可能快。同样,通过这种方式,我不必担心每个或所有变量的数据都在单个年度/每月/每日netcdf文件中。
open_mfdataset