Python - 如果我不更改循环内的值,为什么要更新循环内的备份变量?
Python - Why backup variable inside loop is being updated if I don't change it value inside?
我想在 Wo 中设置矩阵 W 的值。
然后,我将进入一个循环并与 W 进行操作。在循环结束时,我想将其恢复为 Wo,但我得到相反的结果,Wo 正在成为 Wo。
这怎么可能?我怎样才能完成我想要的?我也尝试过将 Wo 定义为全局但没有结果
W = np.random.rand(5, 10)
global Wo
Wo = W # Back up for the initial values of W
for k in range(0, K):
for j in range(0, m): # For every hidden node
for i in range(0, n): # For every connection
# Operations (W get changed)
W = Wo
然后,如果我检查 Wo 的值已被修改,Wo == W 始终为 True。
我错过了什么?
提前致谢
Python 中的所有项目都是参考,因此如果您更改一个参考,其他参考也会随之改变
l = []
global l_global
l_global = l
for i in range(1, 10):
l.append(i)
print(l)
print(l_global)
现在对你的情况有意义吗?
要完成你想要的,你需要一个深拷贝。否则你只会创建对同一内存的引用。
import numpy as np
import copy as cp
W = np.random.rand(5, 10)
global Wo
Wo = cp.deepcopy(W) # Back up for the initial values of W
for k in range(0, K):
for j in range(0, m): # For every hidden node
for i in range(0, n): # For every connection
# Operations (W get changed)
W = cp.deepcopy(Wo)
我想在 Wo 中设置矩阵 W 的值。 然后,我将进入一个循环并与 W 进行操作。在循环结束时,我想将其恢复为 Wo,但我得到相反的结果,Wo 正在成为 Wo。
这怎么可能?我怎样才能完成我想要的?我也尝试过将 Wo 定义为全局但没有结果
W = np.random.rand(5, 10)
global Wo
Wo = W # Back up for the initial values of W
for k in range(0, K):
for j in range(0, m): # For every hidden node
for i in range(0, n): # For every connection
# Operations (W get changed)
W = Wo
然后,如果我检查 Wo 的值已被修改,Wo == W 始终为 True。
我错过了什么?
提前致谢
Python 中的所有项目都是参考,因此如果您更改一个参考,其他参考也会随之改变
l = []
global l_global
l_global = l
for i in range(1, 10):
l.append(i)
print(l)
print(l_global)
现在对你的情况有意义吗?
要完成你想要的,你需要一个深拷贝。否则你只会创建对同一内存的引用。
import numpy as np
import copy as cp
W = np.random.rand(5, 10)
global Wo
Wo = cp.deepcopy(W) # Back up for the initial values of W
for k in range(0, K):
for j in range(0, m): # For every hidden node
for i in range(0, n): # For every connection
# Operations (W get changed)
W = cp.deepcopy(Wo)