Hello all On Wed, 23 May 2007, Anne Archibald wrote:
> On 23/05/07, Albert Strasheim <[EMAIL PROTECTED]> wrote: > > > Consider the following example: > > First a comment: almost nobody needs to care how the data is stored > internally. Try to avoid looking at the flags unless you're > interfacing with a C library. The nice feature of numpy is that it > hides all that junk - strides, contiguous storage, iteration, what > have you - so that you don't have to deal with it. As luck would have it, I am interfacing with a C library. > > Is it correct that the F_CONTIGUOUS flag is set in the case of the fancy > > indexed x? I'm running NumPy 1.0.3.dev3792 here. > > Numpy arrays are always stored in contiguous blocks of memory with > uniform strides. The "CONTIGUOUS" flag actually means something > totally different, which is unfortunate, but in any case, "fancy > indexing" can't be done as a simple reindexing operation. It must make > a copy of the array. So what you're seeing is the flags of a fresh new > array, created from scratch (and numpy always creates arrays in C > order internally, though that is an implementation detail you should > not rely on). 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. Thanks. Cheers, Albert _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion