[SciPy-User] problems with numpy array assignment

Eric Hermes ehermes at chem.wisc.edu
Tue Mar 4 15:04:38 EST 2014


On 3/4/2014 2:00 PM, Gabriele Brambilla wrote:
> Hi,
>
> Something strange happens in my code: I have added the lines after #...
>
> MYMAP is a 3d numpy array
> PAS = MYMAP[:, hhh, :]
>
> #multiplying per energy bin width
> PAS1 = PAS
> for l in nIph:
>          PAS1[l,:] = PAS1[l,:]*zz
>
> But this affect the result I get when I elaborate the data from:
>
> EXCT = MYMAP[:, hhh, :]
>
> is python continuing to modify the original matrix??
>
> Thanks
>
> Gabriele
>
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
Gabriele,

Numpy arrays are passed as references, so in your code when you modify 
PAS1 (which inherits the reference to MYMAP from PAS), the changes 
propogates upwards into MYMAP.  If you want to avoid this, you can 
explicitly create a copy of the array, either by doing:

PAS = MYMAP[:,hhh,:].copy()

or:

PAS1 = PAS.copy()

Eric

-- 
Eric Hermes
J.R. Schmidt Group
Chemistry Department
University of Wisconsin - Madison

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20140304/73af7924/attachment.html>


More information about the SciPy-User mailing list