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.
Gary Herron
--
https://mail.python.org/mailman/listinfo/python-list