I have two arrays A
and B
of unknown dimensions that I want to concatenate along the N
th dimension. For example:
>>> A = rand(2,2) # just for illustration, dimensions should be unknown
>>> B = rand(2,2) # idem
>>> N = 5
>>> C = concatenate((A, B), axis=N)
numpy.core._internal.AxisError: axis 5 is out of bounds for array of dimension 2
>>> C = stack((A, B), axis=N)
numpy.core._internal.AxisError: axis 5 is out of bounds for array of dimension 3
A related question is asked here. Unfortunately, the solutions proposed do not work when the dimensions are unknown and we might have to add several new axis until getting a minimum dimension of N
.
What I have done is to extend the shape with 1's up until the N
th dimension and then concatenate:
newshapeA = A.shape + (1,) * (N + 1 - A.ndim)
newshapeB = B.shape + (1,) * (N + 1 - B.ndim)
concatenate((A.reshape(newshapeA), B.reshape(newshapeB)), axis=N)
With this code I should be able to concatenate a (2,2,1,3) array with a (2,2) array along axis 3, for instance.
Are there better ways of achieving this?
ps: updated as suggested the first answer.