微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 xarray 保存 NetCDF4 期间的 MemoryError

如何解决通过 xarray 保存 NetCDF4 期间的 MemoryError

我想通过 xarray 加载我的 499 个 NetCDF 文件并将它们连接起来,但是,我似乎无法保存文件

这是我的代码片段:

import pandas as pd
import numpy as np
import xarray as xr
import os

files_xr = [f for f in os.listdir(os.getcwd()) if f.startswith("Precipitation") and f.endswith(".nc")]
files_xr_mer = xr.open_mfdataset(files_xr,combine='by_coords')
files_xr_mer['units'] = 'mm'
new_filename_1 = './prec_file_testing.nc'
files_xr_mer.to_netcdf(path=new_filename_1)

Traceback (most recent call last)
MemoryError: Unable to allocate 2.80 GiB for an array with shape (29,3601,7199) and data type float32 

感谢您的任何建议!我想绝对使用 python 和 NCO 或 CDO 作为最后的选择!

解决方法

您可以尝试为 chunks 中的 open_mfdataset 关键字传递一个值。这应该启用数据流,其中并非所有内容都立即加载到内存中。 https://xarray.pydata.org/en/stable/generated/xarray.open_mfdataset.html

例如chunks={"time": 1} 如果时间是您的维度之一,将导致块被逐一加载。可能会有一些与串联的交互,您可能必须考虑串联是如何发生的,以使其(更)有效。

另请参阅此文档: https://xarray.pydata.org/en/stable/dask.html#chunking-and-performance

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。