выбор xarray на основе координат - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть набор данных, которые я вставляю в набор данных xarray. Ниже у набора данных есть только один DataArray, но это может быть больше в будущем. Некоторые размеры набора данных аннотированы, и я вставил их как координаты вдоль одной или нескольких осей в набор данных. Теперь я хотел бы получить набор данных, для которого координата annot1 = '1'.

Я пробовал несколько разных словарей с помощью методов ds.sel(), но это не похоже на решение. Как бы я проиндексировал приведенный ниже набор данных таким образом, чтобы получать только те данные, для которых annot1 = '1'?

import xarray as xr
import numpy as 

coords = {
    'x':['a','b','c','d'], 
    'y':['A','B','C','D'], 
    'z':['d_000','d_001','d_010','d_011','d_100','d_101'],
    'annot1': ('z',['0','1','0','1','0','1']),
    'annot2': ('z',['0','0','1','1','0','0']),
    'annot3': ('z',['0','0','0','0','1','1']),
    'intens':(['x','y'], np.arange(4**2).reshape((4,4))),
}


ds = xr.Dataset(
    data_vars={
        'data': (['x','y','z'], np.random.randn(4,4,6))
    },
    coords=coords,
)
ds.sel(annot1 = '1') # How do i select only the data where annot1 is '1'?

1 Ответ

0 голосов
/ 04 февраля 2020

Нашел то, что искал: ds.sel(z=ds['annot1']=='1')

...