Так что я нашел это:
При преобразовании кода MATLAB может потребоваться сначала изменить матрица в линейную последовательность, выполнить некоторые операции индексации, а затем изменить форму назад. Так как изменение формы (обычно) приводит к тому же хранилище, должно быть возможно сделать это достаточно эффективно.
Обратите внимание, что порядок сканирования, используемый Reshape в Numpy, по умолчанию равен "C" порядок, тогда как MATLAB использует порядок Фортрана. Если вы просто преобразование в линейную последовательность и обратно это не имеет значения. Но если вы конвертируете изменения из кода MATLAB, который опирается на сканирование заказ, тогда этот код MATLAB:
z = reshape(x,3,4);
должно стать
z = x.reshape(3,4,order='F').copy()
in Numpy.
У меня есть многомерный массив 16 * 2 под названием mafs
, когда я делаю в MATLAB:
mafs2 = reshape(mafs,[4,4,2])
Я получаю что-то другое, чем когда я делаю в Python:
mafs2 = reshape(mafs,(4,4,2))
или даже
mafs2 = mafs.reshape((4,4,2),order='F').copy()
Любая помощь в этом? Спасибо вам всем.