From: Todd M. <jm...@st...> - 2002-12-16 15:00:03
|
Magnus Lie Hetland wrote: >Magnus Lie Hetland <ma...@he...>: >[snip] > > >>This seems like a bug to me. The assignment ought to swap the tails of >>the sequences, as is the case with lists, but with numeric arrays, >>some weird form of overwriting occurs. I guess this may be an >>optimization (i.e. to avoid making copies), but it is rather >>confusing. What do you think? >> >> > >Even stranger: > > > >>>>a = zeros([5]) >>>>b = ones([5]) >>>>p = 2 >>>>tail_a = a[p:] >>>>tail_b = b[p:] >>>>a[p:] = tail_b >>>>b[p:] = tail_a >>>>a, b >>>> >>>> >(array([0, 0, 1, 1, 1]), array([1, 1, 1, 1, 1])) > >I suppose this is due to sharing of slices somehow? I.e: > > This looks to me like the same problem, just performing the effects of the tuple copy one step at a time. The key is that the "tails" are views and not copies. > > >>>>a = ones([5]) >>>>b = a[:] >>>>b[2] = 0 >>>>a >>>> >>>> >array([1, 1, 0, 1, 1]) > >I have to use the copy method here, I guess? > > Yes. array[ slice ] --> a view of a subarray. > > >>>Todd >>> >>> > > > |