A numpy array unexpectedly changes when changing another one despite being separate

Viewed 7311

I found a bug in my large code, and I simplified the issue to the case below.

Although in each step I only change w2, but when at each step I print out w1, it is also changed, because end of the first loop I assign them to be equal. I read for this but there was written in case I make w1 = w2[:] it will solve the issue but it does not

import numpy as np
import math

w1=np.array([[1,2,3],[4,5,6],[7,8,9]])
w2=np.zeros_like(w1)
print 'w1=',w1
for n in range(0,3):
    for i in range(0,3):
        for j in range(0,3):
            print 'n=',n,'i=',i,'j=',j,'w1=',w1
            w2[i,j]=w1[i,j]*2

    w1=w2[:]


#Simple tests
# w=w2[:]
# w1=w[:]

# p=[1,2,3]
# q=p[:];
# q[1]=0;
# print p
1 Answers
Related