python数组拼接concat_Python xarray.concat然后xarray.to_netcdf生成巨大的新文件大小

博主使用xarray.concat将三个90MB的NetCDF4文件按时间维度拼接成一个包含1095天数据的新文件。虽然拼接过程成功,但写入新文件时,文件大小显著增加,1年数据变为700MB,而非预期的270MB。这引发了对文件膨胀原因的疑问,尤其是在其他维度保持不变的情况下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所以我有3个netcdf4文件(每个约90 MB),我想使用包xarray连接.每个文件有一个变量(dis),以0.5度分辨率(lat,lon)表示365天(时间).我的目标是连接三个文件,使得我们的时间序列为1095天(3年).

每个文件(2007年,2008年,2009年)都有:

1变量:dis

3坐标:时间,纬度,经度……就这样

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 – 因为我们在一个维度(时间)缩放(3x). lat和lon的变量,dis和其他尺寸在尺寸上保持不变.

任何想法请大小的巨大高档?我已经测试了读取和写回文件而没有连接,并且成功完成此操作而不增加大小.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值