首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中对netCDF变量进行切片和循环?

如何在Python中对netCDF变量进行切片和循环?
EN

Stack Overflow用户
提问于 2018-07-06 18:29:45
回答 1查看 541关注 0票数 0

我有一个有372个时间步长的netCDF变量,我需要对这个变量进行切片,以读取每个单独的时间步长,以便进行后续处理。

我用过glob。读入我的12个netCDF文件,然后定义变量。

代码语言:javascript
复制
NAME_files = glob.glob('RGL*nc')
NAME_files = NAME_files[0:12]

for n in (NAME_files):    
    RGL = Dataset(n, mode='r')
    footprint = RGL.variables['fp'][:]
    lons = RGL.variables['lon'][:]
    lats = RGL.variables['lat'][:]

我现在需要在一个循环中为变量'footprint‘的372个时间步长重复下面的代码。

代码语言:javascript
复制
footprint_2 =  RGL.variables['fp'][:,:,1:2]

我是Python的新手,对循环的理解很差。任何帮助,包括对我的问题的更好的解释/描述,都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-07-06 22:29:56

您需要确定fp变量的尺寸和形状,以便正确访问它。

我在这里对这些值进行假设。

您的代码包含3个维度:时间、经度、经度。又是假设。

代码语言:javascript
复制
footprint_2 =  RGL.variables['fp'][:,:,1:2]

但是上面的代码得到了所有的时间,所有的lons,对于一个纬度。切片1:2选择1个值。

代码语言:javascript
复制
fp_dims = RGL.variables['fp'].dimensions
print(fp_dims)
# a tuple of dimesions names
 (u'time', u'lon', u'lat')

fp_shape = RGL.variables['fp'].shape

# a tuple of dimesions sizes or lengths
print(fp_shape)
 (372, 30, 30)

len = fp_shape[0]

for time_idx in range(0,len)):
  # you don't say if you want a single lon,lat or all the lon,lat's for a given time step.
  test = RGL.variables['fp'][time_idx,:,:]
  # or if you really want this:
  test = RGL.variables['fp'][time_idx,:,1:2]
  # or a single lon, lat
  test = RGL.variables['fp'][time_idx,8,8]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51208399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档