issues: 433490490
This data as json
id | node_id | number | title | user | state | locked | assignee | milestone | comments | created_at | updated_at | closed_at | author_association | active_lock_reason | draft | pull_request | body | reactions | performed_via_github_app | state_reason | repo | type |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
433490490 | MDU6SXNzdWU0MzM0OTA0OTA= | 2895 | Set/preserve the character array dimension name | 12465248 | closed | 0 | 2 | 2019-04-15T21:40:33Z | 2019-04-19T22:50:36Z | 2019-04-19T22:50:36Z | CONTRIBUTOR | This is a new feature proposal not a bug. I'll open a PR against this issue momentarily, it consists of 4 lines of new code. I've found it highly annoying that one can not set the name of the character array dimension. Looking at the code, I basically found what I expected, except for what I added. Summary: Using a variable's variable.encoding one can decode the name into This shows how it works and the behavoir it changes: ``` # Using the proposed changes....user@machine-session-1[1]:~/Downloads> ipythonimport xarray as xa char_arr = ['abc', 'def', 'ghi'] ds = xa.Dataset(data_vars={'char_arr': char_arr}) ds.char_arr.encoding.update({"dtype": "S1"}) Default/current behaviords.to_netcdf('char_arr_string.nc') New functionality - name the character dimension.ds.char_arr.encoding.update({"char_dim_name": "char_dim"}) ds.to_netcdf('char_arr_named.nc') user@machine-session-2[1]:~/Downloads> ncdump -h char_arr_string.ncnetcdf char_arr_string {dimensions:char_arr = 3 ;string3 = 3 ;variables:char char_arr(char_arr, string3) ;char_arr:_Encoding = "utf-8" ;}user@machine-session-2[2]:~/Downloads> ncdump -h char_arr_named.ncnetcdf char_arr_named {dimensions:char_arr = 3 ;char_dim = 3 ;variables:char char_arr(char_arr, char_dim) ;char_arr:_Encoding = "utf-8" ;}New functionality - when decoding, preserve the character dimension name in the variable encoding for... encoding.ds_read = xa.open_dataset('char_arr_named.nc') ds_read.char_arr.encoding Out[4]:{'_Encoding': 'utf-8','char_dim_name': 'char_dim','chunksizes': None,'complevel': 0,'contiguous': True,'dtype': dtype('S1'),'fletcher32': False,'original_shape': (3, 3),'shuffle': False,'source': '/Users/james/Downloads/char_arr_named.nc','zlib': False}ds_read.to_netcdf('char_arr_named_2.nc') exit() user@machine-session-1[2]:~/Downloads> ncdump -h char_arr_named_2.ncnetcdf char_arr_named_2 {dimensions:char_arr = 3 ;char_dim = 3 ;variables:char char_arr(char_arr, char_dim) ;char_arr:_Encoding = "utf-8" ;}user@machine-session-1[3]:~/Downloads> pip uninstall -y xarrayuser@machine-session-1[4]:~/Downloads> pip install xarrayuser@machine-session-1[5]:~/Downloads> ipythonThe old behavior... does not preserved the char dim name.import xarray as xa ds_read = xa.open_dataset('char_arr_named.nc') ds_read.char_arr.encoding Out[4]:{'_Encoding': 'utf-8','chunksizes': None,'complevel': 0,'contiguous': True,'dtype': dtype('S1'),'fletcher32': False,'original_shape': (3, 3),'shuffle': False,'source': '/Users/james/Downloads/char_arr_named.nc','zlib': False}ds_read.to_netcdf('char_arr_string_2.nc') user@machine-session-2[6]:~/Downloads> ncdump -y char_arr_string_2.ncnetcdf char_arr_string_2 {dimensions:char_arr = 3 ;string3 = 3 ;variables:char char_arr(char_arr, string3) ;char_arr:_Encoding = "utf-8" ;}``` |
{ "url": "https://api.github.com/repos/pydata/xarray/issues/2895/reactions", "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
completed | 13221727 | issue |