Numpy Reshape从数据中获取月度均值

时间:2017-07-16 10:39:32

标签: python numpy mean reshape

我试图从1901年至2015年期间观测到的降水数据集中获得月度资金。我的预变量的当前形状是(1380(time), 360(lon), 720(lat)),其中1380是115年期间的月数。我被告知要计算月度均值,最有效的方法是在np.reshape变量上执行prec命令,将数组拆分为数月和数年。但是我不确定最好的方法是什么。我还想知道在Python中是否有办法选择一年中的特定月份,因为我将为一年中的每个月制作情节。

我一直试图使用下面的代码重塑prec变量。但是我不确定如何正确地做到这一点:

#Set Source Folder
sys.path.append('../../..')
SrcFld = ("/export/silurian/array-01/obs/CRU/")

#Retrieve Data
data_path = ''

example = (str(SrcFld) + 'cru_ts4.00.1901.2015.pre.dat.nc') 
Data = Dataset(example)

#Create Prec Mean Array and reshape to get monthly means
Prec_mean = np.zeros((360,720))

#Retrieve Variables
Prec = Data.variables['pre'][:]
lats = Data.variables['lat'][:]
lons = Data.variables['lon'][:]

np.reshape(Prec, ())

#Get Annual/Monthly Average
Prec_mean =np.mean(Prec,axis=0)

对此问题的任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

以下代码片段将首先按年将降水数组切成小方块。然后,我们可以使用该数组获取月平均降水量。

>>> prec = np.random.rand(1380,360,720)
>>> ind = np.arange(12,1380,12)
>>> yearly_split = np.array(np.split(prec, ind, axis=0))

>>> yearly_split.shape
(115, 12, 360, 720)

>>> monthly_mean = yearly_split.mean(axis=0)
>>> monthly_mean.shape
(12, 360, 720)