简洁版本
如果我有这样的矩阵:
1 2
3 4
在内存中,它是存储为[1 2 3 4]
还是[1 3 2 4]
. 换句话说,矩阵是针对行访问还是列访问更优化?
长版
我正在将一些代码从 Matlab 翻译成 NumPy。我习惯于多维数组的 C 约定(即最后一个索引非常快,矩阵按行存储),这是NumPy 数组的默认设置。但是,在 Matlab 代码中,我总是看到这样的片段(用于在单个多维数组中排列多个彩色图像):
images(:, :, :, i) = im
这对于 C 约定看起来不是最理想的,并且对于 FORTRAN 约定更优化(第一个索引非常快速,矩阵按列存储)。那么,Matlab 使用第二种风格并且对列操作进行了更好的优化是否正确?