したがって、xarray パッケージを使用して連結したい 3 つの netcdf4 ファイル (それぞれ約 90 MB) があります。各ファイルには、365 日 (時間) を 0.5 度の解像度 (緯度、経度) で表す 1 つの変数 (dis) があります。私の目的は、時系列が 1095 日 (3 年) になるように 3 つのファイルを連結することです。
各ファイル (2007 年、2008 年、2009 年) には次のものが含まれます。 1 つの変数: dis 3 つの座標: time、lat、lon ... など
<xarray.Dataset>
Dimensions: (lat: 360, lon: 720, time: 365)
Coordinates:
* lon (lon) float32 -179.75 -179.25 -178.75 -178.25 -177.75 -177.25 ...
* lat (lat) float32 89.75 89.25 88.75 88.25 87.75 87.25 86.75 86.25 ...
* time (time) datetime64[ns] 2007-01-01 2007-01-02 2007-01-03 ...
Data variables:
dis (time, lat, lon) float64 nan nan nan nan nan nan nan nan nan ...
それらをインポートして concat モジュールを使用して連結すると、成功したと思います。この場合、モジュールは filestrF から 3 つの netcdf ファイル名を読み取ります。
flist1 = [1,2,3]
ds_new = xr.concat([xr.open_dataset(filestrF[0,1,1,f]) for f in flist1],dim='time')
新しいデータセットの新しい詳細は、次のように表示されます。
Dimensions: (lat: 360, lon: 720, time: 1095)
私には問題ないようです。しかし、このデータセットを netcdf に書き戻すと、ファイルサイズが爆発的に増大し、1 年間のデータが 700 MB に相当するように見えます。
ds_new.to_netcdf('saved_on_disk1.nc')
- 2 つの連結ファイルの場合、約 1.5 GB
- 3 の場合、、、、2.2 GB
- 4 の場合、、、、2.9 GB
私は 3 x 90 MB = 270 MB を期待していました。変数 dis およびその他の次元 lat と lon のサイズは一定のままです。
サイズの巨大な高級化について何かアイデアはありますか? 連結せずにファイルの読み取りと書き込みをテストしましたが、サイズを増やすことなくこれを正常に実行できました。