【发布时间】:2021-11-14 04:38:24
【问题描述】:
我想计算高于 7 和低于 33 摄氏度的日平均气温的年总和。这是针对生物学相关学位天数指数的定制计算。我想在 python 中做这个计算,我想用 Python 的方式来做,意思是,使用 xarray 和 numpy 等知名包中已经制作的函数。
我正在使用TG dataset from CDS。它采用 netCDF 格式,时间跨度从 1981 年到 2010 年。 我被困在做这个计算。我能够使用以下命令将数据集重新采样为月平均值:
monmean = ds.TG.resample({"time":"1MS"}).mean()
现在我需要对每日温度平均值的月平均值进行上述年度总和,但我找不到避免添加那些超出我定义的区间的值的方法。我试着用这样的面具:
masked_array = ma.masked_outside(monmean, 7+273.15, 33+273.15)
masked_monmean = np.ma.masked_where(np.ma.get_mask(masked_array), monmean)
但是随后发生的事情是 masked_monmean 是一个 maskedarray 并且 xarray 函数 resample 不再适用。
ymonmeansum = masked_monmean.data.resample({'time':'YS'}).sum()
AttributeError: 'numpy.ndarray' object has no attribute 'resample'
你知道我该如何解决这个问题吗?
【问题讨论】:
-
在第三个代码块中应该是 ymonmeansum = masked_monmean.resample({'time':'YS'}).sum() AttributeError: 'MaskedArray' object has no attribute 'resample
标签: python numpy mask netcdf python-xarray