[Numpy-discussion] Change default order to Fortran order

Matthew Brett matthew.brett at gmail.com
Mon Aug 3 10:26:10 EDT 2015


Hi,

On Mon, Aug 3, 2015 at 3:13 PM, Gregory Lee <grlee77 at gmail.com> wrote:
> I agree that often you don't need to worry about the memory order.  However,
> it is not uncommon in medical imaging to go back and forth between a 2D or
> 3D image representation and a 1D array representation (e.g. as often used in
> image reconstruction algorithms).  I found that the main time it was
> necessary to pay careful attention to the memory layout was when converting
> Matlab scripts that involve reshaping operations.

Yes, good point.    A typical example would be this kind of thing:

# data is a 4D array with time / volume axis last
data_2d = data.reshape((-1, data.shape[-1])

For MATLAB, the columns of this array would (by default) have the
values on the first axis fastest changing, then the second, then the
third, whereas numpy's default is the other way round.

I find I usually don't have to worry about this, because I'm later going to do:

data_processed_4d  = data_2d.reshape(data.shape)

which will reverse the previous reshape in the correct way.

But in any case - this is not directly to do with the array memory
layout.  You will get the same output from reshape whether the memory
layout of `data` was Fortran or C.

Cheers,

Matthew



More information about the NumPy-Discussion mailing list