diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 76ed4c43882..c76f3800f2b 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -106,6 +106,8 @@ Bug fixes By `Kai Mühlbauer `_. - Fix weighted ``polyfit`` for arrays with more than two dimensions (:issue:`9972`, :pull:`9974`). By `Mattia Almansi `_. +- Cast ``numpy`` scalars to arrays in :py:meth:`NamedArray.from_arrays` (:issue:`10005`, :pull:`10008`) + By `Justus Magin `_. Documentation ~~~~~~~~~~~~~ diff --git a/xarray/namedarray/core.py b/xarray/namedarray/core.py index 683a1266472..cdf9eab5c8d 100644 --- a/xarray/namedarray/core.py +++ b/xarray/namedarray/core.py @@ -205,7 +205,7 @@ def from_array( return NamedArray(dims, data, attrs) - if isinstance(data, _arrayfunction_or_api): + if isinstance(data, _arrayfunction_or_api) and not isinstance(data, np.generic): return NamedArray(dims, data, attrs) if isinstance(data, tuple): diff --git a/xarray/tests/test_namedarray.py b/xarray/tests/test_namedarray.py index 7bd2c3bec06..537cd824767 100644 --- a/xarray/tests/test_namedarray.py +++ b/xarray/tests/test_namedarray.py @@ -591,6 +591,13 @@ def test_warn_on_repeated_dimension_names(self) -> None: with pytest.warns(UserWarning, match="Duplicate dimension names"): NamedArray(("x", "x"), np.arange(4).reshape(2, 2)) + def test_aggregation(self) -> None: + x: NamedArray[Any, np.dtype[np.int64]] + x = NamedArray(("x", "y"), np.arange(4).reshape(2, 2)) + + result = x.sum() + assert isinstance(result.data, np.ndarray) + def test_repr() -> None: x: NamedArray[Any, np.dtype[np.uint64]]