У меня есть переменная в файле NetCDF, которая имеет значение по умолчанию, если переменная равна нулю. Как удалить это значение или изменить его на 0, когда переменной не хватает значения?Переменные NetCDF, которые имеют значение заполнения/отсутствующее значение
ответ
Похоже, проблема заключается в том, что, когда переменная заполняется в файл NetCDF, она устанавливается в значение, заданное по умолчанию для значений, которые отсутствуют. Теперь я предполагаю, что вам нужно удалить эти значения по умолчанию после файл был написан, и вы работаете с данными.
Итак (в зависимости от того, как вы обращаетесь к переменной) Я вытащил переменную из файла NetCDF и назначил ее переменной python. Это первый метод, который приходит на ум.
Используйте для цикла пошагов и заменить значение по умолчанию, что с 0
variable=NetCDF_variable #Assume default value is 1e10
cleaned_list=[]
for i in variable:
if i == 1e10:
cleaned_list.append(0) #0 or whatever you want to fill here
else:
cleaned_list.append(i)
Если значение по умолчанию является поплавком, вы можете захотеть взглянуть на numpy.isclose, если приведенный выше код не работает. Вы также можете быть заинтересованы в masking ваши данные в случае, если вы сделаете какие-либо вычисления, вставив 0.
EDIT: Пользователь N1B4 обеспечил намного более чистый и эффективный способ сделать то же самое, что и выше.
variable[variable == 1e10] = 0
Поскольку переменные netCDF передаются в массивы numpy, 'variable [variable == 1e10] = 0' выполняет то же, что и выше, и может работать на многомерных массивах. – N1B4
Я знал, что есть более быстрый способ, я все еще изучаю стенографию. Спасибо за предложение, я добавлю его к ответу –