follの-999.0の値をすべて置き換えたいと思います。 netCDFファイルを0.0で区切ります。ファイルはここにある: https://www.dropbox.com/s/ohh7tntzm2pj1uw/all_SSP3_BaU_NoCC.nc?dl=0pythonを使ってnetCDFファイルの値を置き換えてください
ここに私の機能です:
def modify_nc_value(path_inp, name_var, val_to_modify, new_value):
"""
Replace value in netCDF vriable from val_to_modify to new_value
Args:
path_inp:
name_var: Name of variable for which to modify value, if -1, then change all variables
val_to_modify:
new_value:
Returns:
"""
hndl_inp = netCDF4.Dataset(path_inp, 'r+')
if name_var == -1:
for var, varin in hndl_inp.variables.iteritems():
hndl_inp[var][:][hndl_inp[var][:] == val_to_modify] = new_value
else:
hndl_inp[name_var][:][hndl_inp[name_var][:] == val_to_modify] = new_value
hndl_inp.close() # Write variable back to disk
しかし、機能が動作するようには思えません。 -999.0の値は置き換えられません。これを修正するには?
変数は常に1Dですか?私はそうは思わないが、あなたのコードは常に1Dになるように 'var 'を割り当てます。つまり' [var] [:] 'です。 – N1B4
変数は3Dです – user308827
http://unidata.github.io/netcdf4-python/#netCDF4.Dataset.syncに記載されているように同期する必要はありませんか? –