【发布时间】:2020-10-12 12:02:17
【问题描述】:
我正在尝试计算下面链接的 NARR 每日网格数据集的 30 年温度正常值(1981-2010 年平均值)。
最后,对于每个网格点,我想要一个包含 365 个值的数组,每个值都包含根据当天 30 年的数据计算得出的当天平均温度。例如,每个网格点数组中的第一个值将是根据该网格点的 1 月 1 日温度数据的 30 年(1981-2010 年)计算的 1 月 1 日平均温度。我的最终目标是能够使用这个新的 30yrNormal 数组来计算每日温度异常。
到目前为止,我只能从一年的数据中计算出异常情况。这样做的问题是,它取的是日气温与全年平均值之间的差,而不是日气温与该日气温的 30 年平均值之间的差:
file='air.sfc.2018.nc'
ncin = Dataset(file,'r')
#put data into numpy arrays
lons=ncin.variables['lon'][:]
lats=ncin.variables['lat'][:]
lats1=ncin.variables['lat'][:,0]
temp=ncin.variables['air'][:]
ncin.close()
AvgT=np.mean(temp[:,:,:],axis=0)
#compute anomalies by removing time-mean
T_anom=temp-AvgT
数据: ftp://ftp.cdc.noaa.gov/Datasets/NARR/Dailies/monolevel/ 1981-2010 年
【问题讨论】:
-
尝试在字典中读取多个一年文件,其中年份为键,对应的
Dataset为值。然后试着看看你是否能弄清楚如何平均。如果您仍然需要帮助,则需要详细说明Dataset的结构,例如,如何在给定的纬度/经度坐标查找给定日期的温度。 -
分析气候数据的最佳方法是使用特殊的运算符,如 CDO、NCO、NCL 等。我鼓励您在继续使用 Python 之前探索它们,但您可以尝试探索
Xarray中的resample函数。另外,试试 CDO 中的ydaymean函数,看看它是否能回答您的问题。它基本上计算多年的每日平均值。
标签: python numpy netcdf weather noaa