In [337]: x=np.array([[111,112,121,122,131,132],[211,212,221,222,231,232],[311,3
...: 12,321,322,331,332]])
In [338]: x.shape
Out[338]: (3, 6)
In [339]: x
Out[339]:
array([[111, 112, 121, 122, 131, 132],
[211, 212, 221, 222, 231, 232],
[311, 312, 321, 322, 331, 332]])
Единственное изменение формы, при котором последнее измерение сохраняется в правильном порядке:
In [340]: x.reshape(3,3,2)
Out[340]:
array([[[111, 112],
[121, 122],
[131, 132]],
[[211, 212],
[221, 222],
[231, 232]],
[[311, 312],
[321, 322],
[331, 332]]])
Теперь просто поменяйте местами первые два измерения:
In [341]: x.reshape(3,3,2).transpose(1,0,2)
Out[341]:
array([[[111, 112],
[211, 212],
[311, 312]],
[[121, 122],
[221, 222],
[321, 322]],
[[131, 132],
[231, 232],
[331, 332]]])