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