繁体   English   中英

如何防止使用datetime时python中的netcdf4加载整个变量

[英]how to prevent netcdf4 in python from loading entire variable when using datetime

我希望验证我对本示例中python对象的行为的理解。

假设我在内存有限的笔记本电脑上有一个非常大的netcdf4数据集,例如无限维度中的一百万个点,这是“时间”,自2015-11-12 16:0:8.000000 0:00起以秒为单位。 我想访问第一次和最后一次作为日期时间对象, 而不将所有值加载到内存中。

现在,我知道可以使用以下代码将第一个和最后一个日期作为datetime对象:

import netCDF4 as nc4
from netCDF4 import Dataset
cdf = Dataset(fname,mode="r",format='NETCDF4')
time_var = cdf.variables['time']
dtime = nc4.num2date(time_var[0:10],time_var.units)
print('data starts at %s' % dtime[0])

打印声明给了我我想要的东西:
“数据始于2015-11-12 16:00:08”

现在,python是否将所有“时间”数据加载到内存中以执行此操作? 或者,正如我使用MATLAB所了解的那样,cdf现在是打开文件中'time'变量的指针。

非常感谢Marinna

是的,cdf是指向打开文件的指针或视图,而不是指向内存的副本。 这个答案对此进行了讨论。 https://stackoverflow.com/a/4371049/1211981正如@bart所述,您应该使用:

dtime = nc4.num2date(time_var[0],time_var.units)

dtime2 = nc4.num2date(time_var[-1],time_var.units)

得到你想要的时间。 没有大拷贝复制到内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM