[Numpy-discussion] index the last several members of a ndarray

Scott Sinclair scott.sinclair.za at gmail.com
Tue Oct 18 09:58:27 EDT 2011


On 18 October 2011 13:56, Chao YUE <chaoyuejoy at gmail.com> wrote:
> but it's strange that if you use b[...,-1],
> you get:
> In [402]: b[...,-1]
> Out[402]: array([ 9, 19])
>
> if use b[...,-4:-1],
> you get:
> Out[403]:
> array([[ 6,  7,  8],
>        [16, 17, 18]])

That's because you're mixing two different indexing constructs. In the
first case, you're using direct indexing, so you get the values in b
at the index you specify.

In the second example you're using slicing syntax, where you get the
values in b at the range of indices starting with -4 and ending *one
before* -1 i.e. the values at b[..., -2].

Here's a simpler example:

In [1]: a = range(5)

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

In [3]: a[0]
Out[3]: 0

In [4]: a[2]
Out[4]: 2

In [5]: a[0:2]
Out[5]: [0, 1]

In [6]: a[-3]
Out[6]: 2

In [7]: a[-1]
Out[7]: 4

In [8]: a[-3:-1]
Out[8]: [2, 3]

Cheers,
Scott



More information about the NumPy-Discussion mailing list