Reversed array in numpy?

arrays, numpy, python

Solution

As others have noted, this is a python slicing technique, and numpy just follows suit. Hopefully this helps explain how it works:

The last bit is the stepsize. The `1` indicates to step by one element at a time, the `-` does that in reverse.

Blanks indicate the first and last, unless you have a negative stepsize, in which case they indicate last and first:

In [1]: import numpy as np

In [2]: a = np.arange(5)

In [3]: a
Out[3]: array([0, 1, 2, 3, 4])

In [4]: a[0:5:1]
Out[4]: array([0, 1, 2, 3, 4])

In [5]: a[0:5:-1]
Out[5]: array([], dtype=int64)

In [6]: a[5:0:-1]
Out[6]: array([4, 3, 2, 1])

In [7]: a[::-2]
Out[7]: array([4, 2, 0])

Line 5 gives an empty array since it tries to step backwards from the `0`th element to the `5`th. The slice doesn't include the 'endpoint' (named last element) so line 6 misses `0` when going backwards.

Problem

Numpy tentative tutorial suggests that `a[ : :-1]` is a reversed `a`. Can someone explain me how we got there? I understand that `a[:]` means for each element of `a` (with axis=0). Next `:` should denote the number of elements to skip (or period) from my understanding.

Original source

Related problems