1

1 つの変数を持つグリッド上に約 100 のタイムステップを持つ netcdf ファイルがあり、タイムステップにわたって累積されます。現在、変数の値に対する各時間ステップの寄与 (つまり、連続する時間ステップの差) を計算することに関心があります。

現在、次のシーケンスを使用しています。

  1. 私が使用する新しいファイルにすべてのタイムステップを抽出するにはcdo seltimestep,$i ...
  2. を使用して、各差分を新しいファイルに計算しますcdo sub $i ${i-1} ...
  3. cdo mergetime ...最後にこれらの新しいファイルを 1 つの結果ファイルにマージします。

それは非常に面倒で、パフォーマンスに関して理想的ではないように思えます。タイムステップの量が多いため、cdo パイプラインを使用できず、その間に多くのファイルを作成する必要があります。

cdo (または nco/ncl のような何か) を使用して累積変数をタイムステップ値に変換するためのより良い解決策はありますか?

4

3 に答える 3

2

xarrayこの種のことのために私が選んだツールです:

import xarray as xr

# Open the netCDF file
ds = xr.open_dataset('./myfile.nc')

# Take the diff along the time dimension
ds['new_variable'] = ds['variable'].diff(dim='time')

# Write a new file
ds.to_netcdf('outfile.nc')
于 2016-12-23T03:51:44.993 に答える