In [1]:
import numpy as np

In [2]:
a1 = np.ones(3, int)
print(a1)


[1 1 1]

In [3]:
print(a1.shape)


(3,)

In [4]:
a2 = np.full(3, 2)
print(a2)


[2 2 2]

In [5]:
print(a2.shape)


(3,)

In [6]:
print(np.stack([a1, a2]))


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

In [7]:
print(np.stack([a1, a2], 0))


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

In [8]:
print(np.stack([a1, a2], 0).shape)


(2, 3)

In [9]:
print(np.stack([a1, a2], 1))


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

In [10]:
print(np.stack([a1, a2], 1).shape)


(3, 2)

In [11]:
# print(np.stack([a1, a2], 2))
# AxisError: axis 2 is out of bounds for array of dimension 2

In [12]:
print(np.stack([a1, a2], -1))


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

In [13]:
print(np.stack([a1, a2], -1).shape)


(3, 2)

In [14]:
a2_ = np.full(4, 2)
print(a2_)


[2 2 2 2]

In [15]:
print(a2_.shape)


(4,)

In [16]:
# print(np.stack([a1, a2]))
# ValueError: all input arrays must have the same shape

In [17]:
a1 = np.ones((3, 4), int)
print(a1)


[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

In [18]:
print(a1.shape)


(3, 4)

In [19]:
a2 = np.full((3, 4), 2)
print(a2)


[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

In [20]:
print(a2.shape)


(3, 4)

In [21]:
print(np.stack([a1, a2]))


[[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

 [[2 2 2 2]
  [2 2 2 2]
  [2 2 2 2]]]

In [22]:
print(np.stack([a1, a2], 0))


[[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

 [[2 2 2 2]
  [2 2 2 2]
  [2 2 2 2]]]

In [23]:
print(np.stack([a1, a2], 0).shape)


(2, 3, 4)

In [24]:
print(np.stack([a1, a2], 1))


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

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

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

In [25]:
print(np.stack([a1, a2], 1).shape)


(3, 2, 4)

In [26]:
print(np.stack([a1, a2], 1)[:, 0, :])


[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

In [27]:
print(np.stack([a1, a2], 1)[:, 1, :])


[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

In [28]:
print(np.stack([a1, a2], 2))


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

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

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

In [29]:
print(np.stack([a1, a2], 2).shape)


(3, 4, 2)

In [30]:
print(np.stack([a1, a2], 2)[:, :, 0])


[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

In [31]:
print(np.stack([a1, a2], 2)[:, :, 1])


[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

In [32]:
# print(np.stack([a1, a2], 3))
# AxisError: axis 3 is out of bounds for array of dimension 3

In [33]:
print(np.stack([a1, a2], -1))


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

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

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

In [34]:
print(np.stack([a1, a2], -1).shape)


(3, 4, 2)

In [35]:
a2_ = np.full((2, 3), 2)
print(a2_)


[[2 2 2]
 [2 2 2]]

In [36]:
# print(np.stack([a1, a2_]))
# ValueError: all input arrays must have the same shape