这是我的代码
import numpy as np
v = np.zeros(4)
backup = np.zeros(4)
for i in range(3):
backup = v
v[0] = 1
print(backup)
我的输出是:
[1. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]
但是我期望:
[0. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]
为什么备份矩阵在分配前会更新?
答案 0 :(得分:4)
您并不是真的在做备份:您只是在做另一个参考。
制作副本可以解决该问题:
import numpy as np
v = np.zeros(4)
backup = np.zeros(4)
for i in range(3):
backup = v.copy()
v[0] = 1
print(backup)
[0. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]
答案 1 :(得分:1)
我认为backup = v没有复制它,只是在分配值。