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/4015#issuecomment-622374824,https://api.github.com/repos/pydata/xarray/issues/4015,622374824,MDEyOklzc3VlQ29tbWVudDYyMjM3NDgyNA==,10194086,2020-05-01T12:49:42Z,2020-05-01T12:49:42Z,MEMBER,"It works when you set `vectorize=False`
```python
da2 = xr.apply_ufunc(
func,
da,
vectorize=False,
dask=""parallelized"",
output_dtypes=[da.dtype],
)
assert da2.dtype == da.dtype, ""wrong dtype""
```
or when you pass your own `meta`:
```python
da2 = xr.apply_ufunc(
func,
da,
vectorize=True,
dask=""parallelized"",
output_dtypes=[da.dtype],
meta=da
)
assert da2.dtype == da.dtype, ""wrong dtype""
```
This also goes wrong if the DataArray has another dtype, e.g. `int`:
```python
da = xr.DataArray(np.arange(2*3*4).reshape(2,3,4)
da = da.chunk(dict(dim_1=1))
da2 = xr.apply_ufunc(
func,
da,
vectorize=True,
dask=""parallelized"",
output_dtypes=[da.dtype],
)
assert da2.dtype == da.dtype, ""wrong dtype""
```
Indeed, the dtype of meta takes precedence over the dtype (https://github.com/dask/dask/blob/25005e19cc30e8b2877d4dadbaef378ee912bdc0/dask/array/core.py#L1022):
> meta : empty ndarray
> empty ndarray created with same NumPy backend, ndim and dtype as the
> Dask Array being created (overrides dtype)
>
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,608974755