[英]How to compute 2, 3 and 5-days accumulated rainfall from daily rainfall data in netcdf using Python
我試圖從網格化的每日降雨量數據(精確的 GPCC)中計算 2、3 和 5 天的累積降雨量,以尋找太空中最大的事件。 當我應用.rolling(time=2).sum()
它在所有時間步中給出 nan 。 我是 python 的新手,因為我很久以前就一直在使用雪貂。 以下是我一直在做的事情,但我感覺已經完成了離線,我不知道如何繼續或繼續。
import numpy as np
import pandas as pd
import xarray as xr
path_gpcc = 'path_to_my_file/GPCC_daily_1982-2020.nc'
# Create Xarray Dataset
gpcc = xr.open_dataset(path_gpcc)
gpcc
#Dimensions: time: 14245lon: 360lat: 180
gpcc_2d = gpcc.rolling(time=2).sum()
gpcc_5d = gpcc.rolling(time=5).sum()
gpcc_7d = gpcc.rolling(time=7).sum()
我也嘗試過這種方法,但它不起作用
lat = gpcc.lat[:]
lon = gpcc.lon[:]
gpcc_2d = []
for i in range(len(lat)):
for j in range(len(lat)):
gpcc_ser = pd.Series(gpcc[0,i,j].values)
gpcc_2d += [gpcc_ser.rolling(2).sum()]
我希望 output(表示 2 天的累積降雨量)類似於上述輸入,其中包含我數據覆蓋范圍的每個網格點的累積降雨量。 由於它將累積不同長度(即 2、3 和 5 天)的每日降雨量,我預計在這些第一個有效長度之前是 'nan'
您擁有的 xarray 代碼應該會給您正確的結果。 請注意,xarray output 是右對齊的,因此 gpcc_2d 中的第一個時間步將只有缺失值。
如果所有時間步都缺少值,您可能想試試我的 package nctoolkit。 您可以檢查它是否適用於該文件,如下所示:
import nctoolkit as nc
path_gpcc = 'path_to_my_file/GPCC_daily_1982-2020.nc'
# Create nctoolkit DataSet
gpcc = nc.open_data(path_gpcc)
# calculate the rolling mean
gpcc.rolling_sum(2)
#plot the result
gpcc.plot()
如果這兩種方法都不起作用,您可能需要檢查文件是否符合 CF 標准https://pumatest.nerc.ac.uk/cgi-bin/cf-checker.pl 。 有時 xarray 或其他包會失敗,因為 netCDF 文件定義不明確並且不遵循預期的約定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.