Q:

get confused with numpy operation a[:] and a[...]

In numpy, there exists some slicing operation like a[1:3,3:5], however I am confused with the operation a[:] and a[...],I am a novice at python, can anyone explain what's the difference between these?

A:

The ... is the Ellipsis, in pure Python it's basically a none-operator. It serves as a placeholder for code such as in this case:
while True:
    ...

Within numpy it serves a similar purpose, it's the do-not-slice operator. Since numpy supports multiple slices at the same time this can be useful. For example, to get the different edges of a cube:
In [1]: import numpy

In [2]: cube = numpy.arange(3**3).reshape(3, 3, 3)

In [3]: cube
Out[3]:
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],
        [24, 25, 26]]])

In [4]: cube[0, ..., 0]
Out[4]: array([0, 3, 6])

In [5]: cube[..., 0, 0]
Out[5]: array([ 0,  9, 18])

In [6]: cube[0, 0, ...]
Out[6]: array([0, 1, 2])

It should be noted that ... is functionally identical to : in the cases above, but it can be different for multi-dimensional objects:
In [7]: cube[..., 0]
Out[7]:
array([[ 0,  3,  6],
       [ 9, 12, 15],
       [18, 21, 24]])

In [8]: cube[:, 0]
Out[8]:
array([[ 0,  1,  2],
       [ 9, 10, 11],
       [18, 19, 20]])

In multi-dimensional objects the ... inserts the : as many times as needed to reach a full dimension

