У меня есть матрица (5,5,5,5), созданная с использованием numpy, которая выглядит так:
[[[[0.64 0.16 0. 0. 0. ]
[0. 0.64 0.16 0. 0. ]
[0. 0. 0.64 0.16 0. ]
[0. 0. 0. 0.64 0.16]
[0. 0. 0. 0. 0.8 ]]
[[0.16 0.04 0. 0. 0. ]
[0. 0.16 0.04 0. 0. ]
[0. 0. 0.16 0.04 0. ]
[0. 0. 0. 0.16 0.04]
[0. 0. 0. 0. 0.2 ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]]
[[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0.64 0.16 0. 0. 0. ]
[0. 0.64 0.16 0. 0. ]
[0. 0. 0.64 0.16 0. ]
[0. 0. 0. 0.64 0.16]
[0. 0. 0. 0. 0.8 ]]
[[0.16 0.04 0. 0. 0. ]
[0. 0.16 0.04 0. 0. ]
[0. 0. 0.16 0.04 0. ]
[0. 0. 0. 0.16 0.04]
[0. 0. 0. 0. 0.2 ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]]
[[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0.64 0.16 0. 0. 0. ]
[0. 0.64 0.16 0. 0. ]
[0. 0. 0.64 0.16 0. ]
[0. 0. 0. 0.64 0.16]
[0. 0. 0. 0. 0.8 ]]
[[0.16 0.04 0. 0. 0. ]
[0. 0.16 0.04 0. 0. ]
[0. 0. 0.16 0.04 0. ]
[0. 0. 0. 0.16 0.04]
[0. 0. 0. 0. 0.2 ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]]
[[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0.64 0.16 0. 0. 0. ]
[0. 0.64 0.16 0. 0. ]
[0. 0. 0.64 0.16 0. ]
[0. 0. 0. 0.64 0.16]
[0. 0. 0. 0. 0.8 ]]
[[0.16 0.04 0. 0. 0. ]
[0. 0.16 0.04 0. 0. ]
[0. 0. 0.16 0.04 0. ]
[0. 0. 0. 0.16 0.04]
[0. 0. 0. 0. 0.2 ]]]
[[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. ]]
[[0.8 0.2 0. 0. 0. ]
[0. 0.8 0.2 0. 0. ]
[0. 0. 0.8 0.2 0. ]
[0. 0. 0. 0.8 0.2 ]
[0. 0. 0. 0. 1. ]]]]
Как мне эффективно преобразовать его в матрицу (25,25), первая строка которой является конкатенацией первых строк первых пяти (5,5) блоков, а вторая - конкатенацией вторых строк первых (5 , 5) блоки и тд? Например, учитывая мою входную матрицу, строка первый выходной матрицы должна быть:
[0.64 0.16 0. 0. 0. 0.16 0.04 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. ]
в то время как строка шестой должна быть комбинацией первых строк с 6-го по 10-й блоки 5 на 5, то есть:
[0. 0. 0. 0. 0. 0.64 0.16 0. 0. 0. 0.16
0.04 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. ]
Я попробовал numpy.reshape (input, (25,25)), но не получил желаемого результата. Любая помощь приветствуется!
Используйте swapaxes
(или transpose
), чтобы изменить порядок осей перед изменением формы:
In [48]: y = x.swapaxes(1,2).reshape(25,25)
In [49]: y[0]
Out[49]:
array([0.64, 0.16, 0. , 0. , 0. , 0.16, 0.04, 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. ])
In [50]: y[5]
Out[50]:
array([0. , 0. , 0. , 0. , 0. , 0.64, 0.16, 0. , 0. , 0. , 0.16,
0.04, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. ])
Это именно то, что я хочу. Спасибо!