Open
Description
Sometimes, it's convenient to include placeholder dimensions of size 1, which allows for removing any ambiguity related to the order of output dimensions.
Currently, this is not supported with xarray:
>>> xr.DataArray([1], dims='x') + xr.DataArray([1, 2, 3], dims='x')
ValueError: arguments without labels along dimension 'x' cannot be aligned because they have different dimension sizes: {1, 3}
>>> xr.Variable(('x',), [1]) + xr.Variable(('x',), [1, 2, 3])
ValueError: operands cannot be broadcast together with mismatched lengths for dimension 'x': (1, 3)
However, these operations aren't really ambiguous. With size 1 dimensions, we could logically do broadcasting like NumPy arrays, e.g.,
>>> np.array([1]) + np.array([1, 2, 3])
array([2, 3, 4])
This would be particularly convenient if we add keepdims=True
to xarray operations (#2170).