# [Numpy-discussion] Multiple assignment confusion

Benjamin Schwartz bens at MIT.EDU
Sun Nov 16 19:53:02 CST 2003

```I am trying to interchange two pieces of an array.  Here is my demo code:

>>> from Numeric import *
>>> a=array([.7,.1,.1,.1])
>>> a=multiply.outer(a,a)
>>> a=multiply.outer(a,a)
>>> sum(sum(sum(sum(a))))
1.0000000000000002
>>> a[1,0],a[1,1]=a[1,1],a[1,0]
>>> sum(sum(sum(sum(a))))
0.93999999999999972

So a is a four-dimensional array that sums to 1, but when I attempt to
switch two 2-d sub-arrays of it I just end up duplicating one of them,
shown by a change in the value of the sum (to .94).  Is this behavior
deliberate?  It certainly seems to break Python's tuple-assignment model.

What I would ideally like to do is perform this swap without more than
two-elements'-worth of temporary storage.  I.e. perform it as a pure
reference swap or switch each pair of elements one by one, reusing
temporary space.  Is this possible with Numeric (or Numarray?)?

Curious,
Ben

```

More information about the Numpy-discussion mailing list