gpt4 book ai didi

Python numpy 错误或功能

转载 作者:行者123 更新时间:2023-11-28 19:50:29 25 4
gpt4 key购买 nike

这是错误还是功能?

import numpy as np
a=b=c=0
print 'a=',a
print 'b=',b
print 'c=',c

a = 5
print 'a=',a
print 'b=',b
print 'c=',c

b = 3
print 'a=',a
print 'b=',b
print 'c=',c

x=y=z=np.zeros(5)
print 'x=',x
print 'y=',y
print 'z=',z

x[2]= 10
print 'x=',x
print 'y=',y
print 'z=',z

y[3]= 20
print 'x=',x
print 'y=',y
print 'z=',z

代码的输出告诉我,numpy 初始化是彼此的克隆,而 python 倾向于将它们视为独立变量。

a= 0
b= 0
c= 0
a= 5
b= 0
c= 0
a= 5
b= 3
c= 0
x= [ 0. 0. 0. 0. 0.]
y= [ 0. 0. 0. 0. 0.]
z= [ 0. 0. 0. 0. 0.]
x= [ 0. 0. 10. 0. 0.]
y= [ 0. 0. 10. 0. 0.]
z= [ 0. 0. 10. 0. 0.]
x= [ 0. 0. 10. 20. 0.]
y= [ 0. 0. 10. 20. 0.]
z= [ 0. 0. 10. 20. 0.]

我希望问题很清楚。这是 numpy 中的错误还是功能?

问候

最佳答案

这不是 bug,也不是关于 numpy 初始化,这是 python 的东西,,在你的情况下检查 x、y 和 z 的 id,它们指向相同的元素

您的代码正在做的是在同一行中进行多次初始化,发生这种情况时,只会创建 1 个对象,并且所有变量都引用相同的对象。

参见下面的示例,重新绑定(bind)如何帮助...

In [19]: a=b=[1,2,3]

In [20]: a
Out[20]: [1, 2, 3]

In [21]: b
Out[21]: [1, 2, 3]

In [22]: a[1]
Out[22]: 2

In [23]: a[1] = 99

In [24]: a
Out[24]: [1, 99, 3]

In [25]: b
Out[25]: [1, 99, 3]

In [26]: id(a)
Out[26]: 27945880

In [27]: id(b)
Out[27]: 27945880

In [28]: a = a[:] # This is Rebinding

In [29]: a
Out[29]: [1, 99, 3]

In [30]: id(a)
Out[30]: 27895568 # The id of the variable is changed

关于Python numpy 错误或功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11501214/

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