簡體   English   中英

如何使用 Python 從 netcdf 中的每日降雨量數據計算 2、3 和 5 天累積降雨量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM