作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个代码如下。当我运行代码时,所有 x1、x2 和 x3 都具有相同的值。根据逻辑,x1 应该有随机数,x2 也是随机数,x3 应该有 0 和 1。
import numpy as np
def reluDerivative(x):
yy=x;
yy[yy<=0] = 0
yy[yy>0] = 1
return yy
x1=np.random.uniform(-1, 1,10)
x2=x1
x3=reluDerivative(x1)
最佳答案
您应该将Python变量视为标签,因此当您执行x2=x1
时,您只是为内存中的相同数据创建一个新标签,这与可变和不可变对象(immutable对象)的行为,例如:
x1 = []
x2 = x1
x2.append(10)
print(x2)
print(x1)
打印结果:
[10]
[10]
因为 x2
和 x1
都标记同一个列表。这是可变对象和不可变对象(immutable对象)的行为:
x1 = 10
x2 = x1
x2 += 5
print(x2)
print(x1)
将打印:
15
10
因为在这种情况下,由于+
操作,x2
被重新分配来标记新创建的15
。
解决方案只是从原始对象复制数据(对于您的 numpy 对象):
x2 = np.copy(x1)
关于python - 为什么当我更改一个变量时,两个变量都会更改? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479065/
我是一名优秀的程序员,十分优秀!