
@H_301_8@
@H_301_8@ @H_403_11@<class 'netCDF4._netCDF4.Dataset'>root group (NETCDF3_CLASSIC data model,file format NETCDF3):CDI: climate Data Interface version 1.6.4 (http://code.zmaw.de/projects/cdi)Conventions: CF-1.4dimensions(sizes): lon(3600),lat(1800),time(31)variables(dimensions): float64 lon(lon),float64 lat(lat),float64 time(time),float32 dis(time,lat,lon)
我有35年的这些数据,我正在尝试从单个网格获取数据并创建一个时间序列来比较它做不同模型的预测.我目前用于从网格单元格中提取数据的代码如下所示.@H_301_8@
@H_301_8@ @H_403_11@from netCDF4 import Datasetimport numpy as nproot_grp = Dataset(r'C:\Users\wadear\Desktop\ERAIland_daily_dis_198001.nc')dis = root_grp.variables['dis']lat = np.round(root_grp.variables['lat'][:],decimals=2).toList()lon = np.round(root_grp.variables['lon'][:],decimals=2).toList()time = root_grp.variables['time'].shape[0]lat_index = lat.index(27.95)lon_index = lon.index(83.55)for i in range(time): print(dis[i][lat_index][lon_index])
现在这感觉非常慢,并且需要很长时间才能在35年的时间内完成这项工作,并且在执行多个不同的网格单元时,所需的时间将真正增加.@H_301_8@
是否有工具通过更快的I / O或索引来加速此过程?@H_301_8@
谢谢!@H_301_8@解决方法 如果你随着时间的推移删除循环并立即访问整个时间序列,你应该节省大量时间,即
@H_301_8@
@H_301_8@ @H_403_11@dis[:,lat_index,lon_index]
如果在时间维度中应用分块,则可以获得进一步的速度增益.查找nccopy的文档.如果您需要重复访问时间序列,这是值得的.您可能希望在分块之前连接一些NetCDF文件,例如每月 – >年度.这是使用ncrcat实用程序完成的.@H_301_8@
另见Chunking Data: Why it Matters.@H_301_8@ 总结
以上是内存溢出为你收集整理的python – 如何快速索引NetCDF文件全部内容,希望文章能够帮你解决python – 如何快速索引NetCDF文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)