2013-08-30 8 views

ответ

1

В numpy вы можете выбрать между Fortran-contiguous (вдоль колонны, как в Matlab) и C-contiguous (вдоль строки, которая по умолчанию в NumPy) порядке, passing the order argument when you create an array, поэтому у вас есть больше гибкости.

Как уже говорилось в @ user2357112, для массива 1xN или Nx1 это не имеет значения, но для массива MXN это имеет значение, и вы должны знать об этом.

+0

Является ли C-смежным по умолчанию 'order 'аргумент. – Samuel

+0

@ Самуэль, да, C-смежный по умолчанию ... –

0

Они делают разные вещи. Один делает массив Nx1; другой - массив 1xN. И «лучше». (На самом деле, макет памяти будет идентичным для обоих массивов, даже если вы укажете хранилище основных столбцов.)

Чтобы ответить на вопрос о макете памяти, однако, numpy по умолчанию имеет строковое расположение, а также C-смежный , Вы можете видеть это ясно отражено в docs.

+0

И если вы укажете fortran-layout, то какая бы то ни было процедура numpy, которую вы используете, все равно вернет вам что-то по умолчанию (так что fortran-layout кажется мне совершенно бессмысленным) – usethedeathstar

+0

@usethedeathstar вам нужен формат Fortran, когда вы используете, например, 'BLAS 'подпрограммы, запрограммированные в Fortran, поэтому этот макет может быть очень полезен –

+0

@SaulloCastro, как вы получаете доступ к этим подпрограммам из numpy? Есть ли версия fortran, такая как numpy.sqrt (x) или что вы хотите сделать? Или вы имеете в виду, если бы вы работали с f2py или так? – usethedeathstar