В Matlab буферный буфер матрицы непрерывный в столбце. Итак, как насчет массива numpy Python. который один между numpy.empty((n,1))
и numpy.empty((1,n))
Буферный раздел массива numpy
ответ
В numpy
вы можете выбрать между Fortran-contiguous
(вдоль колонны, как в Matlab) и C-contiguous
(вдоль строки, которая по умолчанию в NumPy) порядке, passing the order
argument when you create an array, поэтому у вас есть больше гибкости.
Как уже говорилось в @ user2357112, для массива 1xN или Nx1 это не имеет значения, но для массива MXN это имеет значение, и вы должны знать об этом.
Они делают разные вещи. Один делает массив Nx1; другой - массив 1xN. И «лучше». (На самом деле, макет памяти будет идентичным для обоих массивов, даже если вы укажете хранилище основных столбцов.)
Чтобы ответить на вопрос о макете памяти, однако, numpy по умолчанию имеет строковое расположение, а также C-смежный , Вы можете видеть это ясно отражено в docs.
И если вы укажете fortran-layout, то какая бы то ни было процедура numpy, которую вы используете, все равно вернет вам что-то по умолчанию (так что fortran-layout кажется мне совершенно бессмысленным) – usethedeathstar
@usethedeathstar вам нужен формат Fortran, когда вы используете, например, 'BLAS 'подпрограммы, запрограммированные в Fortran, поэтому этот макет может быть очень полезен –
@SaulloCastro, как вы получаете доступ к этим подпрограммам из numpy? Есть ли версия fortran, такая как numpy.sqrt (x) или что вы хотите сделать? Или вы имеете в виду, если бы вы работали с f2py или так? – usethedeathstar
Является ли C-смежным по умолчанию 'order 'аргумент. – Samuel
@ Самуэль, да, C-смежный по умолчанию ... –