2016-06-30 3 views
1

У меня есть переменная в файле NetCDF, которая имеет значение по умолчанию, если переменная равна нулю. Как удалить это значение или изменить его на 0, когда переменной не хватает значения?Переменные NetCDF, которые имеют значение заполнения/отсутствующее значение

ответ

2

Похоже, проблема заключается в том, что, когда переменная заполняется в файл 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 
+3

Поскольку переменные netCDF передаются в массивы numpy, 'variable [variable == 1e10] = 0' выполняет то же, что и выше, и может работать на многомерных массивах. – N1B4

+0

Я знал, что есть более быстрый способ, я все еще изучаю стенографию. Спасибо за предложение, я добавлю его к ответу –