I would like to do the following:
for i in dimension1:
for j in dimension2:
for k in dimension3:
for l in dimension4:
B[k,l,i,j] = A[i,j,k,l]
without the use of loops. In the end both A and B contain the same information but indexed differently.
I must point out that the dimension 1,2,3 and 4 can be the same or different. So a numpy.reshape() seems difficult.
The canonical way of doing this in numpy would be to use np.transpose
's optional permutation argument. In your case, to go from ijkl
to klij
, the permutation is (2, 3, 0, 1)
, e.g.:
In [16]: a = np.empty((2, 3, 4, 5))
In [17]: b = np.transpose(a, (2, 3, 0, 1))
In [18]: b.shape
Out[18]: (4, 5, 2, 3)