У меня есть код в Matlab, который мне нужно перевести в Python. Дело в том, что формы и индексы действительно важны, поскольку они работают с тензорами. Я немного запутался, поскольку кажется, что достаточно использовать order='F'
в python reshape()
. Но когда я работаю с 3D-данными, я заметил, что это не работает. Например, если A
- это массив от 1 до 27 в python
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])
, если я выполняю A.reshape(3, 9, order='F')
, я получаю
[[ 1 4 7 2 5 8 3 6 9]
[10 13 16 11 14 17 12 15 18]
[19 22 25 20 23 26 21 24 27]]
в Matlab для A = 1:27
изменив форму на [3, 3, 3], а затем на [3, 9], кажется, что я получаю другой массив:
1 4 7 10 13 16 19 22 25
2 5 8 11 14 17 20 23 26
3 6 9 12 15 18 21 24 27
И SVD в Matlab и Python дает разные результаты. Итак, есть ли способ это исправить?
И, возможно, вы знаете правильный способ работы с многомерными массивами в Matlab -> python, как если бы я получил такой же SVD для массивов, как arange (1, 13) .reshape (3, 4) и в Matlab 1:12 -> изменить форму (_, [3, 4]) или как правильно с этим работать? Может быть, я могу поменять оси как-то в python, чтобы получить те же результаты, что и в Matlab? Или изменить порядок осей в reshape(x1, x2, x3,...)
в Python?