【发布时间】:2012-08-07 04:57:14
【问题描述】:
于是我找到了this:
在转换 MATLAB 代码时,可能需要先重塑 矩阵到线性序列,执行一些索引操作,然后 重塑回来。由于重塑(通常)会产生相同的视图 存储,应该可以相当有效地做到这一点。
请注意,Numpy 中 reshape 使用的扫描顺序默认为 'C' 顺序,而 MATLAB 使用 Fortran 顺序。如果你只是 转换为线性序列并返回这并不重要。但如果 您正在从依赖于扫描的 MATLAB 代码转换重塑 顺序,然后这个 MATLAB 代码:
z = reshape(x,3,4);应该变成
z = x.reshape(3,4,order='F').copy()在 Numpy 中。
当我在 MATLAB 中做时,我有一个名为 mafs 的多维 16*2 数组:
mafs2 = reshape(mafs,[4,4,2])
我得到的东西与我在 python 中所做的不同:
mafs2 = reshape(mafs,(4,4,2))
甚至
mafs2 = mafs.reshape((4,4,2),order='F').copy()
对此有任何帮助吗?谢谢大家。
【问题讨论】:
-
您能否为没有 MATLAB 可供测试的人发布一些示例输入和所需的 (MATLAB) 输出?
-
我会指出 reshape(mafs,(4,4,2)) 将是一个语法错误,而 reshape(mafs,[4,4,2]) 不是。
标签: python matlab matrix numpy scipy