gpt4 book ai didi

python - python中变量赋值的问题

转载 作者:行者123 更新时间:2023-12-01 02:40:44 24 4
gpt4 key购买 nike

我正在 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

打印结果为:

[ 0.22877423  0.59402658  0.16657174]

[ 0.22877423 0.59402658 0.16657174]

[ 0.21625852  0.5573612   0.123111  ]

[ 0.21625852 0.5573612 0.123111 ]

我想知道为什么 w_old 的值发生了变化?回到 while 循环的开头后不应该更新吗?我该如何解决这个问题?

最佳答案

刚刚使用

w_old = w

不会复制w,使用=只是告诉python你想要为w中存储的任何内容使用另一个名称。因此,对 w 的每次就地更改也会更改 w_old。如果您想了解更多详细信息,有一篇关于它的非常好的博客文章 Ned Batchelder: "Facts and myths about Python names and values"

您可以显式复制 numpy 数组,例如使用 copy方法:

w_old = w.copy()

关于python - python中变量赋值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45746689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com