Функция xarray DataSet.where возвращает только значения nan для переменной - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь сократить объем данных, считываемых с продуктов NARR, доступных в NOAA.После сокращения наборы данных заполнены значениями NaN.Следующий код должен продемонстрировать проблему:

import xarray as xr

# xarray
url = 'https://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/NARR/Dailies/monolevel/apcp.2016.nc'
ds = xr.open_dataset(url, decode_cf=True, decode_times=True)

# make a reduced dataset for the data required
cond1 = (ds.lon > -130) & (ds.lon < -110)
cond2 = (ds.lat > 40) & (ds.lat < 50)
df_red = ds.where(cond1 & cond2, drop=True)

Если вы сравните:

data = ds.apcp[311,:,:]
data.max()
Out[4]: 
<xarray.DataArray 'apcp' ()>
array(108.046875)
Coordinates:
    time     datetime64[ns] 2016-11-07

с:

data_red = df_red.apcp[311,:,:]
data_red.max()
Out[6]: 
<xarray.DataArray 'apcp' ()>
array(0.)
Coordinates:
    time     datetime64[ns] 2016-11-07

Вы видите, что максимальное значение во втором«Сокращенный» набор данных равен нулю.Но я знаю, что там должны быть некоторые данные, как видно на графике full data set .И затем нули в увеличении , показывающие подмножество области сюжет.

Есть идеи, что происходит и почему данные не возвращаются?

[ОБНОВЛЕНИЕ]

Это еще кое-что странное поведение ... заставляет меня думать, что я, должно быть, делаю что-то не так!Когда я повторяю запрос данных, вы можете увидеть изменения значения data.max (), несмотря на то, что индекс времени остается постоянным!

# Plot Data
data = ds.apcp[246,:,:]
data.max()
Out[31]: 
<xarray.DataArray 'apcp' ()>
array(96.710938)
Coordinates:
    time     datetime64[ns] 2016-09-03
# Plot Data
data = ds.apcp[246,:,:]
data.max()
Out[32]: 
<xarray.DataArray 'apcp' ()>
array(102.835938)
Coordinates:
    time     datetime64[ns] 2016-09-03

# Plot Data
data = ds.apcp[246,:,:]
data.max()
Out[33]: 
<xarray.DataArray 'apcp' ()>
array(129.399796)
Coordinates:
    time     datetime64[ns] 2016-09-03
# Plot Data
data = ds.apcp[246,:,:]
data.max()
Out[34]: 
<xarray.DataArray 'apcp' ()>
array(139.259796)
Coordinates:
    time     datetime64[ns] 2016-09-03

# Plot Data
data = ds.apcp[246,:,:]
data.max()
Out[35]: 
<xarray.DataArray 'apcp' ()>
array(70.351738)
Coordinates:
    time     datetime64[ns] 2016-09-03

[Второе обновление]

Похоже, этонекоторые проблемы с сервером DODS в NOAA.Когда я загружаю файл и использую его напрямую, поведение такое же, как и ожидалось.

...