#python #missing-data #netcdf #python-xarray
#python #отсутствует-данные #netcdf #python-xarray
Вопрос:
Я считываю данные компонентов wind (u и v) из файла NetCDF из NCEP / NCAR Reanalysis 1, чтобы выполнить некоторые вычисления. Я использую xarray для чтения файла.
В одном из вычислений я хотел бы замаскировать все данные ниже некоторого порогового значения, чтобы они были равны атрибуту missing_value . Я не хочу пользоваться услугами Нэн.
Однако при чтении данных с помощью xarray атрибут missing_value, присутствующий в переменной в файле NetCDF, не копируется в xarray.Массив данных, содержащий данные.
Я не смог найти способ скопировать этот атрибут из переменной файла NetCDF с помощью xarray.
Вот пример того, что я пытаюсь сделать:
import xarray as xr
import numpy as np
DS1 = xr.open_dataset( "u_250_850_2009012600-2900.nc" )
DS2 = xr.open_dataset( "v_250_850_2009012600-2900.nc" )
u850 = DS1.uwnd.sel( time='2009-01-28 00:00', level=850, lat=slice(10,-60), lon=slice(260,340) )
v850 = DS2.vwnd.sel( time='2009-01-28 00:00', level=850, lat=slice(10,-60), lon=slice(260,340) )
vvel850 = np.sqrt( u850*u850 v850*v850 )
jet850 = vvel850.where( vvel850 >= 12 )
#jet850 = vvel850.where( vvel850 >= 12, vvel850, vvel850.missing_value )
Последняя прокомментированная строка — это то, что я хочу сделать: использовать атрибут missing_value для заполнения, где vvel850 < 12. Последняя строка без комментариев дает мне NaN, чего я пытаюсь избежать.
Является ли это поведением xarray по умолчанию при чтении данных из NetCDF? Да или нет, как я могу получить этот атрибут из переменной file?
Дополнительная информация: я использую PyNGL (http://www.pyngl.ucar.edu /) для создания контурных графиков, и это не работает с NaN.
Спасибо.
Матеус
Ответ №1:
Атрибут «missing_value» сохраняется в encoding
словаре. Другие атрибуты, такие как «units» или «standard_name», сохраняются в attrs
словаре. Например:
v850.encoding['missing_value']
Вас также могут заинтересовать несколько других функций xarray, которые могут помочь вашему варианту использования:
xr.open_dataset
имеетmask_and_scale
аргумент ключевого слова. Это отключит преобразование отсутствующих / заполненных значений в nan.DataArray.to_masked_array
преобразует aDataArray
(заполненный NAN) в anumpy.MaskedArray
для использования в программах построения графиков, таких как Matplotlib или PyNGL.
Комментарии:
1. Спасибо @jhamman, я использовал второе предложение, и оно работает очень хорошо.