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]])