issue_comments: 644442679
This data as json
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | performed_via_github_app | issue |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/pydata/xarray/issues/1077#issuecomment-644442679 | https://api.github.com/repos/pydata/xarray/issues/1077 | 644442679 | MDEyOklzc3VlQ29tbWVudDY0NDQ0MjY3OQ== | 2448579 | 2020-06-15T23:29:11Z | 2020-06-15T23:38:30Z | MEMBER | This seems to be possible following http://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html#compression-by-gathering Here is a quick proof of concept: ``` python import numpy as np import pandas as pd import xarray as xr example 1ds = xr.Dataset( {"landsoilt": ("landpoint", np.random.randn(4))}, { "landpoint": pd.MultiIndex.from_product( [["a", "b"], [1, 2]], names=("lat", "lon") ) }, ) example 2ds = xr.Dataset({"landsoilt": ("landpoint", np.random.randn(4))},{"landpoint": pd.MultiIndex.from_arrays([["a", "b", "c", "d"], [1, 2, 4, 10]], names=("lat", "lon"))},)encode stepdetect using isinstance(index, pd.MultiIndex)idxname = "landpoint" encoded = ds.reset_index(idxname) coords = dict(zip(ds.indexes[idxname].names, ds.indexes[idxname].levels)) for coord in coords: encoded[coord] = coords[coord].values shape = [encoded.sizes[coord] for coord in coords] encoded[idxname] = np.ravel_multi_index(ds.indexes[idxname].codes, shape) encoded[idxname].attrs["compress"] = " ".join(ds.indexes[idxname].names) decode stepdetect using "compress" in var.attrsidxname = "landpoint" decoded = xr.Dataset({}, {idxname: mindex}) decoded["landsoilt"] = (idxname, encoded["landsoilt"].values) xr.testing.assert_identical(decoded, ds) ```
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
187069161 |