[Numpy-discussion] NEP 21: Simplified and explicit advanced indexing (original) (raw)

Stephan Hoyer shoyer at gmail.com
Tue Jun 26 21:22:24 EDT 2018


On Tue, Jun 26, 2018 at 9:38 AM Eric Wieser <wieser.eric+numpy at gmail.com> wrote:

We can expose some of the internals

These could be expressed as methods on the internal indexing objects I proposed in the first reply to this thread, which has seen no responses. I think Hameer Abbasi is looking for something like OrthogonalIndexer(...).tovindex() -> VectorizedIndexer such that arr.oindex[ind] selects the same elements as arr.vindex[OrthogonalIndexer(ind).tovindex()] Eric

It is probably worth noting that xarray already uses very similar classes internally for keeping track of indexing operations. See BasicIndexer, OuterIndexer and VectorizedIndexer: https://github.com/pydata/xarray/blob/v0.10.7/xarray/core/indexing.py#L295-L428

This turns out to be pretty convenient model even when not using subclassing. In xarray, we use them internally in various "partial duck array" classes that do some lazy computation upon indexing with getitem. It's nice to simply be able to forward on Indexer objects rather than implement separate vindex/oindex methods.

We also have utility functions for converting between different forms, e.g., from OuterIndexer to VectorizedIndexer: https://github.com/pydata/xarray/blob/v0.10.7/xarray/core/indexing.py#L654

I guess this is a case for using such classes internally in NumPy, and possibly for exposing them publicly as well. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20180626/819c5c79/attachment.html>



More information about the NumPy-Discussion mailing list