[Numpy-discussion] Non-contiguous array from newaxis indexing
Travis Oliphant
oliphant.travis at ieee.org
Sat Aug 18 06:51:53 EDT 2007
Jens Jørgen Mortensen wrote:
> I would like all these arrays to be contiguous:
>
>>>> import numpy as npy
>>>> npy.__version__
> '1.0.4.dev3967'
>>>> x = npy.arange(4)
>>>> y = x[npy.newaxis, :]
>>>> z = x.reshape((1, 4))
>>>> for a in [x, y, z]:
> ... print a.shape, a.strides, a.flags.contiguous
> ...
> (4,) (4,) True
> (1, 4) (0, 4) False
> (1, 4) (16, 4) True
>
> But y is not contiguous according to y.flags.contiguous - why not and
> why does y and z not have the same strides?
>
> I f
We've tried a few times to let them be contiguous, but it breaks code in
various ways because NumPy takes advantage of 0-striding to accomplish
broadcasting. In theory, it might be able to be fixed, but the fact
that simple fixes don't work makes me wonder.
ound this comment just before the _IsContiguous function in
> arrayobject.c:
>
> /* 0-strided arrays are not contiguous (even if dimension == 1) */
>
> Is this correct?
Yes.
-Travis
More information about the NumPy-Discussion
mailing list