[Numpy-discussion] Ignore axes with dimension==1 for contiguous flags

Sebastian Berg sebastian@sipsolutions....
Sat Sep 22 12:50:40 CDT 2012


Hey,

Numpy currently assumes that if "ndim > 1" then it is impossible for any
array to be both C- and F-contiguous, however an axes of dimension 1
does have no effect on the memory layout. I think I have made most
important changes (actually really very few), though I bet some parts of
numpy still need adapting because of smaller quirks:

https://github.com/seberg/numpy/compare/master...cflags

This example sums up two advantages. On that branch:

In [9]: a = np.arange(9).reshape(3,3)[::3,:]

In [10]: a.flags.contiguous, a.flags.fortran
Out[10]: (True, True)

Note that currently _both_ are false, because numpy does not reset the
strides for the first dimension.

The only real problem I see is that someone who assumes that for a
contiguous array strides[0] or strides[-1] is elemsize has to change the
code or face segmentation faults, but maybe I am missing something big?

Any comments if this is the right idea? And if where would more changes
be needed?

Regards,

Sebastian



More information about the NumPy-Discussion mailing list