foll의 모든 -999.0 값을 바꾸려고합니다. netCDF 파일 0.0. 이 파일은 여기에 있습니다 :파이썬을 사용하여 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
그러나, 기능이 작동하지 않는 것 : 는 https://www.dropbox.com/s/ohh7tntzm2pj1uw/all_SSP3_BaU_NoCC.nc?dl=0
여기 내 기능입니다. -999.0 값은 대체되지 않습니다. 이 문제를 해결하는 방법?
변수는 항상 1D입니까? 나는 의심 스럽지만 코드는 항상 'var'을 1D로 지정합니다. 즉 [var] [:]'입니다. – N1B4
변수가 3D – user308827
http://unidata.github.io/netcdf4-python/#netCDF4.Dataset.sync에 언급 된대로 동기화 할 필요가 없습니까? –