Numpy和+ =效果

cpc*_*333 2 python numpy

Python 3.3.3和NumPy我不理解的东西:

from numpy import *
x1 = zeros(1)
x2 = x1
x1+=1
Run Code Online (Sandbox Code Playgroud)

事实证明,这使得x1和x2变量[1],我不明白.如果你改为x1 = x1 + 1,那么我得x1为[1]而x2为[0],这就是我所追求的.

Kon*_*lph 5

x2 = x1生成两个变量x2x1引用同一个对象.

x1+=1更改引用x1(和x2)下面的对象.

相反,如果您这样做,x1=x1+1则创建一个对象(结果x1+1)并x1仅将结果分配给,同时x2保持不变并引用原始对象.

顺便说一句,这与NumPy无关 - 这是参考工作的一般方式的结果.

  • 我说"一般"因为这不是一个硬性规则.例如,`collections.Counter`是一个可变类型,但是当使用`+ =`时它不会修改`self`. (2认同)