【发布时间】:2021-03-13 17:49:52
【问题描述】:
我目前正在将 MATLAB 库移植到 Python。截至目前,我正在努力使代码尽可能一对一。我注意到 Matlab 与 Python 中的 reshape 之间存在一些差异,这会导致一些问题。
我听说人们谈论“C”和“Fortran”顺序的区别。 numpy 如何默认为“C”顺序而 Matlab 使用“Fortran”。下面是两个使用两个命令的 Python 示例。
>>> a = np.arange(12).reshape((2,3,2))
>>> a
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> b = np.arange(12).reshape((2,3,2), order='F')
>>> b
array([[[ 0, 6],
[ 2, 8],
[ 4, 10]],
[[ 1, 7],
[ 3, 9],
[ 5, 11]]])
下面是与上述python代码等效的matlab/octave。
octave:12> a = reshape((0:11), [3,2,2])
a =
ans(:,:,1) =
0 3
1 4
2 5
ans(:,:,2) =
6 9
7 10
8 11
请注意,每个示例都会产生不同的结果。
这些示例旨在说明我所指的差异。我在项目中处理的数据集要大得多。我需要能够在 Python 中重塑数组,并确信它正在执行与在 Matlab 中相同的重塑操作。任何帮助将不胜感激。
【问题讨论】:
标签: python matlab numpy linear-algebra