Начиная с:
In [17]: arr = np.asarray([
...: [[0.1, 0.2, 0.3], [0.5, 0.6, 0.7], [0.7, 0.8, 0.9]],
...: [[0.3, 0.1, 0.4], [0.4, 0.5, 0.6], [0.5, 0.6, 0.1]]])
In [18]: arr
Out[18]:
array([[[0.1, 0.2, 0.3],
[0.5, 0.6, 0.7],
[0.7, 0.8, 0.9]],
[[0.3, 0.1, 0.4],
[0.4, 0.5, 0.6],
[0.5, 0.6, 0.1]]])
In [19]: arr.shape
Out[19]: (2, 3, 3)
После нескольких попыток транспонирования я получил:
In [26]: arr.transpose(1,2,0) # shape (3,3,2) moves 1st dim to end
Out[26]:
array([[[0.1, 0.3],
[0.2, 0.1],
[0.3, 0.4]],
[[0.5, 0.4],
[0.6, 0.5],
[0.7, 0.6]],
[[0.7, 0.5],
[0.8, 0.6],
[0.9, 0.1]]])
Первые два измерения можно объединить с изменением формы:
In [27]: arr.transpose(1,2,0).reshape(9,2)
Out[27]:
array([[0.1, 0.3],
[0.2, 0.1],
[0.3, 0.4],
[0.5, 0.4],
[0.6, 0.5],
[0.7, 0.6],
[0.7, 0.5],
[0.8, 0.6],
[0.9, 0.1]])