# Guide to NumPy Indexing¶

This section of the ndindex documentation discusses the semantics of NumPy
indices. This really is more of a documentation of NumPy itself than of
ndindex. However, understanding the underlying semantics of indices is
critical to making the best use of ndindex, as well as for making the best use
of NumPy arrays themselves. Furthermore, the sections on integer
indices and slices also apply to the built-in
Python sequence types like `list`

and `str`

.

This guide is aimed for people who are new to NumPy indexing semantics, but it also tries to be as complete as possible and at least mention all the various corner cases. Some of these technical points can be glossed over if you are a beginner.

## Table of Contents¶

This guide is split into four sections.

After a short introduction, the first two sections cover the basic
single-axis index types: integer indices, and
slices. These are the indices that only work on a single axis of
an array at a time. These are also the indices that work on built-in sequence
types such as `list`

and `str`

. The semantics of these index types on `list`

and `str`

are exactly the same as on NumPy arrays, so even if you do not care
about NumPy or array programming, these sections of this document can be
informative just as a general Python programmer. Slices in particular are oft
confused and the guide on slicing clarifies their exact rules and debunks some
commonly spouted false beliefs about how they work.

The third section covers multidimensional
indices. These indices will not work on
the built-in Python sequence types like `list`

and `str`

; they are only
defined for NumPy arrays. This section is itself split into six subsections.
First is a basic introduction to what a NumPy array
is. Following this are pages
for each of the remaining index types, the basic indices:
tuples,
ellipses, and
newaxis; and the advanced indices:
integer arrays and boolean
arrays (i.e., masks).

Finally, a page on other topics relevant to indexing covers a set of miscellaneous topics about NumPy arrays that are useful for understanding how indexing works, such as broadcasting, views, strides, and ordering.