让我们考虑这两个文件:
from netCDF4 import Dataset as dset
for i in range(2):
with dset('test_{}.nc'.format(i),'w') as f:
f.createDimension('A',5)
f.createDimension('B',8)
f.createVariable('v1',float,('A',))
f.createVariable('v2',float,('B',))
f['v1'][:] = range(i*5,i*5+5)
f['v2'][:] = range(i*8,i*8+8)
如果这两个维度是无限的,则ncrcat可以直接工作,并且将v2沿B连接,将v1沿A连接。
ncrcat test_0.nc test_1.nc test_01.nc
但是,如果尺寸是固定大小的(如上例所示),我必须先将A和B设置为记录尺寸,以使其不受限制,然后再串联
ncks --mk_rec_dmn A test_0.nc test_0u.nc ; mv test_0u.nc test_0.nc
ncks --mk_rec_dmn B test_0.nc test_0u.nc ; mv test_0u.nc test_0.nc
ncks --mk_rec_dmn A test_1.nc test_1u.nc ; mv test_1u.nc test_1.nc
ncks --mk_rec_dmn B test_1.nc test_1u.nc ; mv test_1u.nc test_1.nc
ncrcat test_0.nc test_1.nc test_01.nc
还有另一种方法可以减少行数吗?
答案 0 :(得分:1)
不幸的--mk_rec_dmn
每次调用仅更改一个维度。将多个固定尺寸更改为记录尺寸在我们的TODO列表中(#1129)。但是,可以通过使用mv
的覆盖功能来消除-O
语句:
ncks -O --mk_rec_dmn A test_0.nc test_0.nc
ncks -O --mk_rec_dmn B test_0.nc test_0.nc
ncks -O --mk_rec_dmn A test_1.nc test_1.nc
ncks -O --mk_rec_dmn B test_1.nc test_1.nc
ncrcat test_0.nc test_1.nc test_01.nc
HTH, cz