5

したがって、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 のサイズは一定のままです。

サイズの巨大な高級化について何かアイデアはありますか? 連結せずにファイルの読み取りと書き込みをテストしましたが、サイズを増やすことなくこれを正常に実行できました。

4

2 に答える 2