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
441192361,MDU6SXNzdWU0NDExOTIzNjE=,2945,Implicit conversion from int to float tampers with values when int is not representable as float,14000880,closed,0,,,1,2019-05-07T11:57:20Z,2022-04-09T02:14:28Z,2022-04-09T02:14:28Z,NONE,,,,"
```python
ds = xr.Dataset()
val = 95042027804193144
ds['var1'] = xr.DataArray(val)
ds_1 = ds.where(ds.var1==val)
print(ds_1.var1.dtype)
dtype('float64')
print(int(ds_1.var1))
95042027804193152
```
#### Problem description
As described in #2183, int values are converted to float in `where()`, also when there are no NaNs in the data. This is a serious issue for the case when the int64 number is not representable as float64, as is the case in the example above. The resulting numbers are then actually different from the original numbers, without any warning.
#### Expected Output
I guess this is hard to fix. At a minimum, `where()` should probably not cast to float when there are no NaNs (which would already fix our use case). I would also rather expect an error instead of silently changing the values of a variable.
#### Output of ``xr.show_versions()``
INSTALLED VERSIONS
------------------
commit: None
python: 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516]
python-bits: 64
OS: Linux
OS-release: 4.19.0-0.bpo.2-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8
libhdf5: 1.8.18
libnetcdf: 4.4.1.1
xarray: 0.12.1
pandas: 0.24.2
numpy: 1.15.4
scipy: 1.2.1
netCDF4: 1.2.8
pydap: None
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: 1.0.3.4
nc_time_axis: None
PseudonetCDF: None
rasterio: 0.36.0
cfgrib: 0.9.6.post1
iris: None
bottleneck: 1.2.1
dask: 1.1.4
distributed: None
matplotlib: 3.0.3
cartopy: 0.16.0
seaborn: 0.8.1
setuptools: 39.2.0
pip: 19.0.3
conda: None
pytest: 4.4.1
IPython: 7.5.0
sphinx: None
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/2945/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
245778442,MDU6SXNzdWUyNDU3Nzg0NDI=,1492,Slicing inconsistent for coordinates and dimensions without coordinates,14000880,closed,0,,,3,2017-07-26T16:21:21Z,2019-07-29T01:36:13Z,2019-07-29T01:36:13Z,NONE,,,,"This is a new behavior since 0.9 and has broken some of my scripts, I am not sure if this is intentional?
old, before 0.9:
```
ds = xr.Dataset()
ds['x'] = (('x'), np.arange(100., 200., 10.))
ds['var1'] = (('x', 'i'), np.random.rand(10, 5))
ds.sel(x=slice(110, 130), i=slice(1, 3))
Dimensions: (i: 3, x: 3)
Coordinates:
* x (x) float64 110.0 120.0 130.0
* i (i) int64 1 2 3
Data variables:
var1 (x, i) float64 0.8894 0.01157 0.2779 0.7247 0.5809 0.3448 ...
```
new, since 0.9:
```
ds = xr.Dataset()
ds['x'] = (('x'), np.arange(100., 200., 10.))
ds['var1'] = (('x', 'i'), np.random.rand(10, 5))
ds.sel(x=slice(110, 130), i=slice(1, 3))
Dimensions: (i: 2, x: 3)
Coordinates:
* x (x) float64 110.0 120.0 130.0
Dimensions without coordinates: i
Data variables:
var1 (x, i) float64 0.9989 0.9092 0.9248 0.296 0.2209 0.5416
```
Maybe slicing uses the standard (excluding) python `slice()` for these dimensions and continues to use the (including) pandas slice for coordinates? Anyway, I find this slightly unexpected.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1492/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
189721898,MDU6SXNzdWUxODk3MjE4OTg=,1126,unstack raises error when there is only one dimension stacked,14000880,closed,0,,,3,2016-11-16T14:34:05Z,2019-01-25T06:43:01Z,2019-01-25T06:43:01Z,NONE,,,,"I am aware that `stack()`/`unstack()` is meant to be used for combining/splitting
multiple dimensions. Still, I wonder if it should throw an error when used
on a dataset with only one dimension:
```
ds = xr.Dataset()
ds['var'] = xr.DataArray(np.array([3., 4.]), dims=('dim1'))
ds_s = ds.stack(z=['dim1'])
ds_s.unstack('z')
ValueError: cannot unstack a dimension that does not have a MultiIndex
```
I stumbled upon this when implementing a stack-groupby-apply-unstack pattern on a dataset
which normally has more than one dimension to stack, but sometimes might contain only one.
I can circumvent this quite easily by checking if there is only one dimension to stack and not
using stack/unstack then, but I somehow expected it to work without treating this case in a special
way.
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1126/reactions"", ""total_count"": 3, ""+1"": 3, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue
385215500,MDU6SXNzdWUzODUyMTU1MDA=,2579,sortby(dim) removes dimension from an array if dim is a repeated dimension,14000880,closed,0,,,1,2018-11-28T11:06:54Z,2018-11-28T22:33:15Z,2018-11-28T22:33:15Z,NONE,,,,"Related to #1378. As mentioned there, xarray sometimes seems to have problems with repeated dimensions. sortby() such a dimension seems to be an example:
```python
ds = xr.DataArray(np.eye(2), coords={'alt': [100, 200], 'alt': [100, 200], },
dims=('alt', 'alt'), name='cov').to_dataset()
print(ds)
Dimensions: (alt: 2)
Coordinates:
* alt (alt) int64 100 200
Data variables:
cov (alt, alt) float64 1.0 0.0 0.0 1.0
print(ds.sortby('alt'))
Dimensions: (alt: 2)
Coordinates:
* alt (alt) int64 100 200
Data variables:
cov (alt) float64 1.0 1.0
```
#### Output of ``xr.show_versions()``
commit: None
python: 2.7.13.final.0
python-bits: 64
OS: Linux
OS-release: 4.9.0-8-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8
xarray: 0.10.9
pandas: 0.23.4
numpy: 1.15.4
scipy: 1.1.0
netCDF4: 1.2.8
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: 1.0.0
PseudonetCDF: None
rasterio: 0.36.0
iris: None
bottleneck: 1.2.1
cyordereddict: 1.0.0
dask: 0.20.2
distributed: None
matplotlib: 2.2.3
cartopy: 0.16.0
seaborn: 0.8.1
setuptools: 39.2.0
pip: 18.1
conda: None
pytest: 3.8.0
IPython: 5.8.0
sphinx: None
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/2579/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue