In [1]:
import numpy as np

In [2]:
print(np.newaxis is None)


True

In [3]:
a = np.arange(6).reshape(2, 3)
print(a)


[[0 1 2]
 [3 4 5]]

In [4]:
print(a.shape)


(2, 3)

In [5]:
print(a[:, :, np.newaxis])


[[[0]
  [1]
  [2]]

 [[3]
  [4]
  [5]]]

In [6]:
print(a[:, :, np.newaxis].shape)


(2, 3, 1)

In [7]:
print(a[:, np.newaxis, :])


[[[0 1 2]]

 [[3 4 5]]]

In [8]:
print(a[:, np.newaxis, :].shape)


(2, 1, 3)

In [9]:
print(a[np.newaxis, :, :])


[[[0 1 2]
  [3 4 5]]]

In [10]:
print(a[np.newaxis, :, :].shape)


(1, 2, 3)

In [11]:
print(a[:, np.newaxis])


[[[0 1 2]]

 [[3 4 5]]]

In [12]:
print(a[:, np.newaxis].shape)


(2, 1, 3)

In [13]:
print(a[np.newaxis])


[[[0 1 2]
  [3 4 5]]]

In [14]:
print(a[np.newaxis].shape)


(1, 2, 3)

In [15]:
print(a[..., np.newaxis])


[[[0]
  [1]
  [2]]

 [[3]
  [4]
  [5]]]

In [16]:
print(a[..., np.newaxis].shape)


(2, 3, 1)

In [17]:
print(a[np.newaxis, :, np.newaxis, :, np.newaxis])


[[[[[0]
    [1]
    [2]]]


  [[[3]
    [4]
    [5]]]]]

In [18]:
print(a[np.newaxis, :, np.newaxis, :, np.newaxis].shape)


(1, 2, 1, 3, 1)

In [19]:
a_newaxis = a[:, :, np.newaxis]

In [20]:
print(np.shares_memory(a, a_newaxis))


True

In [21]:
a = np.zeros(27, dtype=np.int).reshape(3, 3, 3)
print(a)


[[[0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]]]

In [22]:
print(a.shape)


(3, 3, 3)

In [23]:
b = np.arange(9).reshape(3, 3)
print(b)


[[0 1 2]
 [3 4 5]
 [6 7 8]]

In [24]:
print(b.shape)


(3, 3)

In [25]:
print(a + b)


[[[0 1 2]
  [3 4 5]
  [6 7 8]]

 [[0 1 2]
  [3 4 5]
  [6 7 8]]

 [[0 1 2]
  [3 4 5]
  [6 7 8]]]

In [26]:
print(b[np.newaxis, :, :].shape)


(1, 3, 3)

In [27]:
print(a + b[np.newaxis, :, :])


[[[0 1 2]
  [3 4 5]
  [6 7 8]]

 [[0 1 2]
  [3 4 5]
  [6 7 8]]

 [[0 1 2]
  [3 4 5]
  [6 7 8]]]

In [28]:
print(b[:, np.newaxis, :].shape)


(3, 1, 3)

In [29]:
print(a + b[:, np.newaxis, :])


[[[0 1 2]
  [0 1 2]
  [0 1 2]]

 [[3 4 5]
  [3 4 5]
  [3 4 5]]

 [[6 7 8]
  [6 7 8]
  [6 7 8]]]

In [30]:
print(b[:, :, np.newaxis].shape)


(3, 3, 1)

In [31]:
print(a + b[:, :, np.newaxis])


[[[0 0 0]
  [1 1 1]
  [2 2 2]]

 [[3 3 3]
  [4 4 4]
  [5 5 5]]

 [[6 6 6]
  [7 7 7]
  [8 8 8]]]

In [32]:
a = np.arange(6).reshape(2, 3)
print(a)


[[0 1 2]
 [3 4 5]]

In [33]:
print(a.shape)


(2, 3)

In [34]:
print(a[np.newaxis])


[[[0 1 2]
  [3 4 5]]]

In [35]:
print(a[np.newaxis].shape)


(1, 2, 3)

In [36]:
print(np.expand_dims(a, 0))


[[[0 1 2]
  [3 4 5]]]

In [37]:
print(np.expand_dims(a, 0).shape)


(1, 2, 3)

In [38]:
print(a.reshape(1, 2, 3))


[[[0 1 2]
  [3 4 5]]]

In [39]:
print(a.reshape(1, 2, 3).shape)


(1, 2, 3)

In [40]:
print(a.reshape(1, *a.shape))


[[[0 1 2]
  [3 4 5]]]

In [41]:
print(a.reshape(1, *a.shape).shape)


(1, 2, 3)