On Fri, Jun 5, 2015 at 3:23 PM, Gary Herron <gary.her...@islandtraining.com> wrote:
> On 06/05/2015 06:11 AM, Paul Appleby wrote: > >> On Fri, 05 Jun 2015 14:55:11 +0200, Todd wrote: >> >> Numpy arrays are not lists, they are numpy arrays. They are two >>> different data types with different behaviors. In lists, slicing is a >>> copy. In numpy arrays, it is a view (a data structure representing some >>> part of another data structure). You need to explicitly copy the numpy >>> array using the "copy" method to get a copy rather than a view: >>> >> OK, thanks. I see. >> >> (I'd have thought that id(a[1]) and id(b[1]) would be the same if they >> were the same element via different "views", but the id's seem to change >> according to rules that I can't fathom.) >> > Nope. It's odder than that. a[1] is still a view into the inderlying > numpy array, and your id is the id of that view. Each such index produces a > new such view object. Check this out: > > >>> import numpy > >>> a = numpy.array([1,2,3]) > >>> id(a[1]) > 28392768 > >>> id(a[1]) > 28409872 > > This produces two different view of the same underlying object. > a[1] and b[1] are not views: >>> a[1].flags['OWNDATA'] True >>> b[1].flags['OWNDATA'] True >>> a[1:2].flags['OWNDATA'] False
-- https://mail.python.org/mailman/listinfo/python-list