0
가정한다 I는 아래 예와 동일한 치수를 갖는 여러 좌표 가지고색인화 된 좌표에 해당하는 크기로 색인화되지 않은 좌표의 색인 생성?
In [46]: ds = xarray.Dataset({"x": (("a", "b"), arange(25).reshape(5,5)+100), "y": ("b", arange(5)-100)}, {"a": arange(5), "b": arange(5)*2, "c": (("a",), list("ABCDE"))})
In [47]: print(ds)
<xarray.Dataset>
Dimensions: (a: 5, b: 5)
Coordinates:
* b (b) int64 0 2 4 6 8
c (a) <U1 'A' 'B' 'C' 'D' 'E'
* a (a) int64 0 1 2 3 4
Data variables:
x (a, b) int64 100 101 102 103 104 105 106 107 108 109 110 111 ...
y (b) int64 -100 -99 -98 -97 -96
업무 a
는 인덱스 (I 이름으로 추측)에 인식되어 있지만 c
가 아닌 좌표.
In [48]: print(ds.loc[dict(a=slice(0, 2))])
<xarray.Dataset>
Dimensions: (a: 3, b: 5)
Coordinates:
* b (b) int64 0 2 4 6 8
c (a) <U1 'A' 'B' 'C'
* a (a) int64 0 1 2
Data variables:
x (a, b) int64 100 101 102 103 104 105 106 107 108 109 110 111 ...
y (b) int64 -100 -99 -98 -97 -96
하지만 인덱스 c
좌표 사용하지 않을 수 있습니다 : 내가 사용 지수는 a
을 조정할 수 있습니다,
In [49]: print(ds.loc[dict(c=slice("A", "C"))])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-49-33483295fec4> in <module>()
----> 1 print(ds.loc[dict(c=slice("A", "C"))])
/dev/shm/gerrit/venv/stable-3.5/lib/python3.5/site-packages/xarray/core/dataset.py in __getitem__(self, key)
292 if not utils.is_dict_like(key):
293 raise TypeError('can only lookup dictionaries from Dataset.loc')
--> 294 return self.dataset.sel(**key)
295
296
/dev/shm/gerrit/venv/stable-3.5/lib/python3.5/site-packages/xarray/core/dataset.py in sel(self, method, tolerance, drop, **indexers)
1180 """
1181 pos_indexers, new_indexes = indexing.remap_label_indexers(
-> 1182 self, indexers, method=method, tolerance=tolerance
1183 )
1184 result = self.isel(drop=drop, **pos_indexers)
/dev/shm/gerrit/venv/stable-3.5/lib/python3.5/site-packages/xarray/core/indexing.py in remap_label_indexers(data_obj, indexers, method, tolerance)
273 new_indexes = {}
274
--> 275 dim_indexers = get_dim_indexers(data_obj, indexers)
276 for dim, label in iteritems(dim_indexers):
277 try:
/dev/shm/gerrit/venv/stable-3.5/lib/python3.5/site-packages/xarray/core/indexing.py in get_dim_indexers(data_obj, indexers)
241 if invalid:
242 raise ValueError("dimensions or multi-index levels %r do not exist"
--> 243 % invalid)
244
245 level_indexers = defaultdict(dict)
ValueError: dimensions or multi-index levels ['c'] do not exist
, 나는에서 c
a
에에 부울 배열을 전달할 수 있습니다
In [61]: ds.loc[dict(a=((ds.c>='A') & (ds.c<='C')))]
Out[61]:
<xarray.Dataset>
Dimensions: (a: 3, b: 5)
Coordinates:
* b (b) int64 0 2 4 6 8
c (a) <U1 'A' 'B' 'C'
* a (a) int64 0 1 2
Data variables:
x (a, b) int64 100 101 102 103 104 105 106 107 108 109 110 111 ...
y (b) int64 -100 -99 -98 -97 -96
을 사용하거나 where
방법을 사용합니다 (단, ds['y']
에 부작용이 있음). 더 큰 (?),
In [57]: ds.where((ds.c>='A') & (ds.c<='C'), drop=True)
Out[57]:
<xarray.Dataset>
Dimensions: (a: 3, b: 5)
Coordinates:
* b (b) int64 0 2 4 6 8
c (a) <U1 'A' 'B' 'C'
* a (a) int64 0 1 2
Data variables:
x (a, b) float64 100.0 101.0 102.0 103.0 104.0 105.0 106.0 107.0 ...
y (b, a) float64 -100.0 -100.0 -100.0 -99.0 -99.0 -99.0 -98.0 ...
그러나 두 경우 모두 데이터 변수와 함께 작동합니다. 인덱스되지 않은 좌표와 데이터 변수 사이에 실질적인 차이가 있습니까? 색인을위한 좌표로 c
의 상태를 사용할 수 있습니까? 아니면 데이터 변수와 마찬가지로 로터리 방식을 사용해야합니까?