1

在 Matlab 中,矩阵的缓冲区在列中是连续的。那么 Python 的 numpy 数组呢?numpy.empty((n,1))和之间哪个更好numpy.empty((1,n))

4

2 回答 2

1

numpy您可以在(Fortran-contiguous沿列,如在 Matlab 中)和C-contiguous(沿行,这是 numpy 中的默认值)顺序之间进行选择,在创建数组时传递order参数,因此您具有更大的灵活性。

正如@user2357112 已经说过的,对于 1xN 或 Nx1 阵列,这无关紧要,但对于 MXN 阵列,它确实很重要,您应该意识到这一点。

于 2013-08-30T07:43:54.450 回答
0

他们做不同的事情。一个人制作一个 Nx1 数组;另一个制作一个 1xN 数组。两者都不是“更好”。(事实上​​,两个数组的内存布局是相同的,即使您指定了列优先存储。)

不过,为了回答有关存储布局的问题,numpy 默认为行优先布局,也就是 C 连续布局。您可以在docs中清楚地看到这一点。

于 2013-08-30T06:26:19.243 回答