python: variable in while loop -


i'm running following code in python:

w= np.random.rand(3)  w_old=np.zeros((3,))  while (np.linalg.norm(w - w_old)) / np.linalg.norm(w) > 1e-5:      w_old=w      print w     print w_old      w[0]-=eta*de1i     w[1]-=eta*de2i     w[2]-=eta*de3i      print w     print w_old 

the results prints :

[ 0.22877423  0.59402658  0.16657174]  [ 0.22877423  0.59402658  0.16657174] 

and

[ 0.21625852  0.5573612   0.123111  ]  [ 0.21625852  0.5573612   0.123111  ] 

i'm wondering why value of w_old has been changed? shouldn't updated after going beginning of while loop? how can fix this?

just using

w_old = w 

doesn't copy w, using = tells python want name whatever stored in w. every in-place change w change w_old. there nice blog post in case want more details ned batchelder: "facts , myths python names , values"

you can explicitly copy numpy array, example, using copy method:

w_old = w.copy() 

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -