On Mon, Jan 27, 2014 at 9:07 AM, Mark Lawrence <breamore...@yahoo.co.uk> wrote: > On 27/01/2014 09:53, spir wrote: >> >> Note: your example is strongly obscured by using weird and rare features >> that don't bring any helpful point to the actual problematic concepts >> you apparently want to deal with. >> > > Nothing weird and rare about it, just something from the numpy maths library > and not pure Python.
NumPy arrays may seem weird to someone who expects a slice to create a shallow copy of the data, in the way that slicing a `list` creates a shallow copy: >>> a = [0, 2, 4] >>> b = a[:] `b` is a copy of list `a`, so modifying `b` has no effect on `a`: >>> b[:] = [1, 3, 5] >>> a [0, 2, 4] Slicing a NumPy array returns a new view on the data: a = np.array([0, 2, 4], dtype=object) b = a[:] >>> b.base is a True >>> b.flags.owndata False The view shares the underlying data array, so modifying it also changes the original: >>> b[:] = [1, 3, 5] >>> a array([1, 3, 5], dtype=object) You have to ask for a `copy`: a = np.array([0, 2, 4], dtype=object) b = a.copy() >>> b.base is None True >>> b.flags.owndata True >>> b[:] = [1, 3, 5] >>> a array([0, 2, 4], dtype=object) _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor