Rozważmy te dwa pliki:
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)
Jeśli te dwa wymiary są nieograniczone, ncrcat działa bezpośrednio i łączy v2 wzdłuż B i v1 wzdłuż A.
ncrcat test_0.nc test_1.nc test_01.nc
Jeśli jednak wymiary mają stały rozmiar, jak w powyższym przykładzie, muszę sukcesywnie ustawić A i B jako wymiary rekordu, aby były nieograniczone, a następnie połączyć
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
Czy jest inny sposób na zrobienie tego z mniejszą liczbą linii?
1 odpowiedź
Niefortunne --mk_rec_dmn
zmienia tylko jeden wymiar na wywołanie. Zmiana wielu stałych wymiarów na wymiary rekordów znajduje się na naszej liście TODO (nr 1129). Możesz jednak wyeliminować instrukcje mv
, używając funkcji nadpisywania z -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
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.