簡體   English   中英

如何在Python中對netCDF變量進行切片和循環?

[英]How to slice and loop through a netCDF variable in Python?

我有一個372個時間步長的netCDF變量,我需要對該變量進行切片以讀取每個單獨的時間步長,以便進行后續處理。

我用過glob。 讀取我的12個netCDF文件,然后定義變量。

 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'][:] 

現在,我需要針對變量“足跡”的372個時間步長中的每個循環重復以下代碼。

 footprint_2 = RGL.variables['fp'][:,:,1:2] 

我是Python的新手,對循環的掌握很差。 任何幫助,包括對我的問題的更好的解釋/描述,將不勝感激。

您需要確定fp變量的尺寸和形狀,以便正確訪問它。

我在這里對這些值進行假設。

您的代碼包含3個維度:時間,lon,lat。 再次只是假設。

footprint_2 =  RGL.variables['fp'][:,:,1:2]

但是,上面的代碼會在所有緯度范圍內始終保持1緯度。 切片1:2選擇1個值。

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM