ndarray, ellipsis [...]

The ellipsis covers all remaining elements:

In [1]: import numpy as np

In [2]: a = np.array( range(24)).reshape( 4, 2, 3)

In [3]: b = a[0][...]

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

In [5]: b[...] = 12

In [6]: b
Out[6]: 
array([[12, 12, 12],
       [12, 12, 12]])

In [7]: a
Out[7]: 
array([[[12, 12, 12],
        [12, 12, 12]],

       [[ 6,  7,  8],
        [ 9, 10, 11]],

       [[12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23]]])

In [8]: a.__array_interface__['data']
Out[8]: (31198960, False)

In [9]: b.__array_interface__['data']
Out[9]: (31198960, False)

Line 3 creates the symbol b as a reference to a. Lines 8 and 9 show that the virtual addresses are identical.

The ellispsis can also be used in an assignment:

In [1]: import numpy as np

In [2]: a = np.array( range(24)).reshape( 4, 2, 3)

In [3]: a
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]]])

In [4]: c = np.ones(6).reshape(2,3)

In [5]: c
Out[5]: 
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])

In [6]:  a[0][...] = c

In [7]: a
Out[7]: 
array([[[ 1,  1,  1],
        [ 1,  1,  1]],

       [[ 6,  7,  8],
        [ 9, 10, 11]],

       [[12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23]]])

In [8]: c[...] = 2

In [9]: c
Out[9]: 
array([[ 2.,  2.,  2.],
       [ 2.,  2.,  2.]])

In [10]: a
Out[10]: 
array([[[ 1,  1,  1],
        [ 1,  1,  1]],

       [[ 6,  7,  8],
        [ 9, 10, 11]],

       [[12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23]]])

To create an array filled with a number:

In [8]: a = np.array( [12] * 10)

In [9]: a
Out[9]: array([12, 12, 12, 12, 12, 12, 12, 12, 12, 12])

This array can then be set to some other value:

In [10]: a[...] = 11

In [11]: a
Out[11]: array([11, 11, 11, 11, 11, 11, 11, 11, 11, 11])

This works also with more-dimensional arrays:

In [18]: a = np.array( [12] * 10).reshape(2,5)

In [19]: a
Out[19]: 
array([[12, 12, 12, 12, 12],
       [12, 12, 12, 12, 12]])

In [20]: a[...] = 11

In [21]: a
Out[21]: 
array([[11, 11, 11, 11, 11],
       [11, 11, 11, 11, 11]])

To set a part of the array:

In [21]: a
Out[21]: 
array([[11, 11, 11, 11, 11],
       [11, 11, 11, 11, 11]])

In [22]: a[0][...] = 10

In [23]: a
Out[23]: 
array([[10, 10, 10, 10, 10],
       [11, 11, 11, 11, 11]])