[Numpy-discussion] Non-contiguous array from newaxis indexing
Jens Jørgen Mortensen
jensj at fysik.dtu.dk
Wed Aug 22 05:36:21 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.
OK, then how about giving y the strides (16, 4) like z? Then
_IsContiguous() will say thay y is contiguous. Will that break any code?
I can take a look at how to fix the strides for newaxis-indexed arrays if
this is way to go.
Jens Jørgen
> 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
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
More information about the NumPy-Discussion
mailing list