On 23/05/07, Albert Strasheim <[EMAIL PROTECTED]> wrote:

> If you are correct that this is in fact a fresh new array, I really
> don't understand where the values of these flags. To recap:
>
> In [19]: x = N.zeros((3,2))
>
> In [20]: x.flags
> Out[20]:
>   C_CONTIGUOUS : True
>   F_CONTIGUOUS : False
>   OWNDATA : True
>   WRITEABLE : True
>   ALIGNED : True
>   UPDATEIFCOPY : False
>
> In [21]: x[:,[1,0]].flags
> Out[21]:
>   C_CONTIGUOUS : False
>   F_CONTIGUOUS : True
>   OWNDATA : False
>   WRITEABLE : True
>   ALIGNED : True
>   UPDATEIFCOPY : False
>
> So since x and x[:,[1,0]] are both new arrays, shouldn't their flags be
> identical? I'd expect at least C_CONTIGUOUS and OWNDATA to be True.

It looks like x[:,[1,0]] is done by fancy indexing on the first index
and then transposing. I haven't looked at the implementation, though.
If you need the result to be C-contiguous without further copying, you
can do:
x.transpose()[[1,0],:].transpose().flags
which is horrible. I wouldn't rely on it, though, I'd use
asconguousarray afterward.

Perhaps Travis could comment on whether it is true that numpy does
transpose like this when fancy indexing (at least, this flavour of
fancy indexing).

Anne
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to