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-622599058,https://api.github.com/repos/pydata/xarray/issues/4015,622599058,MDEyOklzc3VlQ29tbWVudDYyMjU5OTA1OA==,2448579,2020-05-01T22:47:36Z,2020-05-01T22:47:36Z,MEMBER,"@mathuse is right. The solution is to use `dtype` when we create `meta` for vectorized functions here: https://github.com/pydata/xarray/blob/3820fb77256682d909c1e41d962e29bec0edd62d/xarray/core/computation.py#L1008-L1011 @ulijh or @mathause , are either of you up for sending in a PR? For now the workaround is to pass your own `meta = np.ndarray((0,0), dtype=da.dtype)`","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,608974755 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