我正在使用来自多个 netcdf 文件的数据(在我计算机上的文件夹中)。每个文件保存整个美国的数据,为期 5 年。基于 x 和 y 坐标的索引来引用位置。我正在尝试为多个位置(网格单元)创建一个时间序列,将 5 年的时间段编译为 20 年的时间段(这将组合 4 个文件)。现在,我能够从一个位置的所有文件中提取数据,并使用 numpy append 将其编译成一个数组。但是,我想提取多个位置的数据,将其放入矩阵中,其中行是位置,列包含时间序列降水数据。我想我必须创建一个列表或字典,但我不确定如何在循环中将数据分配给列表/字典。
我是 python 和 netCDF 的新手,如果这是一个简单的解决方案,请原谅我。我一直在使用此代码作为指南,但还没有弄清楚如何将其格式化为我想做的事情:Python Reading Multiple NetCDF Rainfall files of variable size
这是我的代码:
import glob
from netCDF4 import Dataset
import numpy as np
# Define x & y index for grid cell of interest
# Pittsburgh is 37,89
yindex = 37 #first number
xindex = 89 #second number
# Path
path = '/Users/LMC/Research Data/NARCCAP/'
folder = 'MM5I_ccsm/'
## load data file names
all_files = glob.glob(path + folder+'*.nc')
all_files.sort()
## initialize np arrays of timeperiods and locations
yindexlist = [yindex,'38','39'] # y indices for all grid cells of interest
xindexlist = [xindex,xindex,xindex] # x indices for all grid cells of interest
ngridcell = len(yindexlist)
ntimestep = 58400 # This is for 4 files of 14600 timesteps
## Initialize np array
timeseries_per_gridcell = np.empty(0)
## START LOOP FOR FILE IMPORT
for timestep, datafile in enumerate(all_files):
fh = Dataset(datafile,mode='r')
days = fh.variables['time'][:]
lons = fh.variables['lon'][:]
lats = fh.variables['lat'][:]
precip = fh.variables['pr'][:]
for i in range(1):
timeseries_per_gridcell = np.append(timeseries_per_gridcell,precip[:,yindexlist[i],xindexlist[i]]*10800)
fh.close()
print timeseries_per_gridcell
我将 3 个文件放在 Dropbox 上,以便您可以访问它们,但我只能发布 2 个链接。它们是:
https://www.dropbox.com/s/rso0hce8bq7yi2h/pr_MM5I_ccsm_2041010103.nc?dl=0 https://www.dropbox.com/s/j56undjvv7iph0f/pr_MM5I_ccsm_2046010103.nc?dl=0