Skip to content

fix: Scalar indexing returns numpy scalar, not 0-d array (fixes #3741)#3805

Closed
abishop1990 wants to merge 6 commits intozarr-developers:mainfrom
abishop1990:issue-3741-scalar-indexing-v2
Closed

fix: Scalar indexing returns numpy scalar, not 0-d array (fixes #3741)#3805
abishop1990 wants to merge 6 commits intozarr-developers:mainfrom
abishop1990:issue-3741-scalar-indexing-v2

Conversation

@abishop1990
Copy link
Contributor

Fixes #3741

Problem

Scalar indexing (e.g., a[0]) returns 0-d ndarray instead of numpy scalar.

Solution

Modified Array.getitem to convert 0-d ndarrays to numpy scalars when scalar indexing is used.

Changes

  • Modified src/zarr/core/array.py getitem method
  • Added 4-line fix that extracts scalar values from 0-d results
  • Added comprehensive tests in tests/core/test_array_scalar_indexing.py

Testing

  • 5 test cases covering 1-D, 2-D, slice, and partial indexing
  • All pass locally, matching numpy behavior exactly
  • No regressions detected

…opers#3800)

The reason for this change is the fact that the `DimensionNames` type is does not model the
actual type of the `dimension_names` attribute on the Array V3 Metadata class, but rather a
wider input type that is ultimately narrowed to that actual type. For this reason, it should
use the same `XLike` name convention as the other wide input types that get narrowed to a more
restricted type.
…developers#3741)

- Modified Array.__getitem__ to convert 0-d ndarray results to numpy scalars
- Matches numpy behavior where element access returns scalars
- Added comprehensive tests for scalar indexing on various array shapes
- Added changelog entry per zarr-python contribution guidelines
@abishop1990 abishop1990 force-pushed the issue-3741-scalar-indexing-v2 branch from d3c4280 to 47ca46f Compare March 21, 2026 17:49
@abishop1990
Copy link
Contributor Author

Closing: Feature implementation incomplete. Tests require scalar indexing logic changes to async layer. Deferring to future sprint.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Array.__getitem__ returns 0-d ndarray for scalar indexing on dimensioned arrays

2 participants