# [Python-3000] Ellipsis Literal

Robert Kern robert.kern at gmail.com
Wed Jan 23 08:37:40 CET 2008

Raymond Hettinger wrote:
> I missed the conversation on this one.
> Was there a use case or a reason to add this?

It was added for Numeric a long time ago. We use it in multidimensional indices
to specify slice(None, None, None) for all of the omitted dimensions. For example:

In [25]: from numpy import *

In [26]: a = arange(2*3*4).reshape([2,3,4])

In [27]: a
Out[27]:
array([[[ 0,  1,  2,  3],
[ 4,  5,  6,  7],
[ 8,  9, 10, 11]],

[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])

In [28]: a[...,0]
Out[28]:
array([[ 0,  4,  8],
[12, 16, 20]])

In [29]: a[:,:,0]
Out[29]:
array([[ 0,  4,  8],
[12, 16, 20]])

In [30]: a[1,...]
Out[30]:
array([[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])

In [31]: a[1,:,:]
Out[31]:
array([[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])

In [32]: a[1,...,0]
Out[32]: array([12, 16, 20])

In [33]: a[1,:,0]
Out[33]: array([12, 16, 20])

> I ask because the spelling has an unfortunate
> overlap with the sys.ps2 prompt:
>
>>>> def f(x):
> ...     return x+1
>
> I don't know if this is a problem.  Just thought I would bring it up.

I've never encountered a problem with this ambiguity. At least, not in software.
I don't know if affects newbie-comprehension of code snippets.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma