Python
numpy

shape and reshape sample using numpy

A = np.random.randint(0,10,(3,4,3,4))
print(A)
# solution by flattening the last two dimensions into one
# (useful for functions that don't accept tuples for axis argument)
print(A.shape)
AS = A.shape[:-2] + (-1,)
print(AS)
Ar = A.reshape(AS)
print(Ar)
sum = Ar.sum(axis=-1)
print(sum)
  • e.g.
[[[[6 1 1 3]
   [2 6 4 0]
   [3 7 2 6]]

  [[8 0 6 0]
   [9 7 7 6]
   [1 4 0 3]]

  [[7 9 9 7]
   [1 4 2 9]
   [5 7 4 7]]

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


 [[[7 7 0 9]
   [6 1 9 5]
   [0 2 2 4]]

  [[0 2 3 9]
   [4 6 1 2]
   [1 2 7 7]]

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

  [[0 4 2 2]
   [7 5 1 2]
   [5 7 9 0]]]


 [[[6 6 9 2]
   [6 5 3 7]
   [9 7 5 4]]

  [[6 6 3 8]
   [6 7 2 5]
   [9 4 4 8]]

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

  [[4 3 3 1]
   [8 8 0 0]
   [1 0 7 3]]]]
(3, 4, 3, 4)
(3, 4, -1)
[[[6 1 1 3 2 6 4 0 3 7 2 6]
  [8 0 6 0 9 7 7 6 1 4 0 3]
  [7 9 9 7 1 4 2 9 5 7 4 7]
  [5 0 3 6 3 7 0 3 3 1 4 4]]

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

 [[6 6 9 2 6 5 3 7 9 7 5 4]
  [6 6 3 8 6 7 2 5 9 4 4 8]
  [7 3 1 4 0 2 0 9 5 0 6 1]
  [4 3 3 1 8 8 0 0 1 0 7 3]]]
[[41 51 71 39]
 [52 44 42 44]
 [69 68 38 38]]

Refs.