0

让我们考虑这两个文件:

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 直接工作并沿 B 连接 v2,沿 A 连接 v1。

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

有没有另一种方法可以用更少的行来做到这一点?

4

1 回答 1

1

Unfortunate--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

高温超临界

于 2019-11-21T01:29:49.163 回答