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 232995032,MDExOlB1bGxSZXF1ZXN0MTIzNTgyNTY0,1438,Fixing GH1434 xr.concat loses coordinate dtype information with recarrays in 0.9,5384661,closed,0,,,3,2017-06-01T20:06:22Z,2023-01-23T10:25:28Z,2023-01-23T10:25:28Z,CONTRIBUTOR,,0,pydata/xarray/pulls/1438," - [x] Closes #1434 - [x] Tests added / passed - [x] Passes ``git diff upstream/master | flake8 --diff`` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1438/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 156857895,MDU6SXNzdWUxNTY4NTc4OTU=,861,Bug in arithmetic operations on DataArray objects whose dimensions are numpy structured arrays or recarrays,5384661,closed,0,,,3,2016-05-25T21:46:38Z,2016-08-11T04:20:33Z,2016-08-11T04:20:33Z,CONTRIBUTOR,,,,"The following code will not run with current version of the xarray ``` import numpy as np import xarray as xr p_data = np.array([('John', 180), ('Stacy', 150), ('Dick',200)], dtype=[('name', '|S256'), ('height', int)]) p_data_1 = np.array([('John', 180), ('Stacy', 150), ('Dick',200)], dtype=[('name', '|S256'), ('height', int)]) weights_0 = xr.DataArray([80,56,120], dims=['participant'], coords={'participant':p_data}) weights_1 = xr.DataArray([81,52,115], dims=['participant'], coords={'participant':p_data_1}) print weights_1-weights_0 ``` It will crash with the error `ValueError: index 'participant' not aligned` The real cause is the `isnull` function from **pandas** that throws TypeError exception when called on e.g. numpy recarray or numpy structured array A quick fix involves replacing `array_equiv` function in **xarray.core.ops.py** with the following implementation ``` def array_equiv(arr1, arr2): """"""Like np.array_equal, but also allows values to be NaN in both arrays """""" arr1, arr2 = as_like_arrays(arr1, arr2) if arr1.shape != arr2.shape: return False flag_array = (arr1 == arr2) # isnull fcn from pandas will throw TypeError when run on numpy structured array # therefore for dims that are np structured arrays we skip testing for nan try: flag_array |= (isnull(arr1) & isnull(arr2)) except TypeError: pass return bool(flag_array.all()) ``` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/861/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 151483622,MDExOlB1bGxSZXF1ZXN0NjgxMTk3MDI=,837,Fixed a bug that showed when trying to establish equivalence of two a…,5384661,closed,0,,,10,2016-04-27T20:31:50Z,2016-06-24T18:13:36Z,2016-06-24T18:13:36Z,CONTRIBUTOR,,0,pydata/xarray/pulls/837,"…rrays that are numpy.recarrays The following code WILL run with the fix but will crash when running current xarray: ``` Python import numpy as np import xarray as xr p_data = np.array([('John', 180), ('Stacy', 150), ('Dick',200)], dtype=[('name', '|S256'), ('height', int)]) p_data_1 = np.array([('John', 180), ('Stacy', 150), ('Dick',200)], dtype=[('name', '|S256'), ('height', int)]) weights_0 = xr.DataArray([80,56,120], dims=['participant'], coords={'participant':p_data}) weights_1 = xr.DataArray([81,52,115], dims=['participant'], coords={'participant':p_data_1}) print weights_1-weights_0 ``` ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/837/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull