From the code below, why doesn't the list (z) retain it's value before appending another numpy array (r) to it? (after z becomes non-empty, z seems to get r value even before appending r to it) How do you make it retain value? For example, the end result should be z =
[[0. 0. 1.]
[0. 0. 2.]
[0. 0. 3.]
[0. 0. 4.]
[0. 0. 5.]]
code:
import numpy as np
r = np.zeros(3)
z=[]
for i in range (1,6):
r[2] = i
print("r")
print(r)
print("z before appending r")
print(z)
z.append(r)
print("z after appending r")
print(z)
z=np.array(z)
print("z after numpy'd")
print(z)
run result:
r
[0. 0. 1.]
z before appending r
[]
z after appending r
[array([0., 0., 1.])]
r
[0. 0. 2.]
z before appending r
[array([0., 0., 2.])]
z after appending r
[array([0., 0., 2.]), array([0., 0., 2.])]
r
[0. 0. 3.]
z before appending r
[array([0., 0., 3.]), array([0., 0., 3.])]
z after appending r
[array([0., 0., 3.]), array([0., 0., 3.]), array([0., 0., 3.])]
r
[0. 0. 4.]
z before appending r
[array([0., 0., 4.]), array([0., 0., 4.]), array([0., 0., 4.])]
z after appending r
[array([0., 0., 4.]), array([0., 0., 4.]), array([0., 0., 4.]), array([0., 0., 4.])]
r
[0. 0. 5.]
z before appending r
[array([0., 0., 5.]), array([0., 0., 5.]), array([0., 0., 5.]), array([0., 0., 5.])]
z after appending r
[array([0., 0., 5.]), array([0., 0., 5.]), array([0., 0., 5.]), array([0., 0., 5.]), array([0., 0., 5.])]
z after numpy'd
[[0. 0. 5.]
[0. 0. 5.]
[0. 0. 5.]
[0. 0. 5.]
[0. 0. 5.]]