在python中复制变量

时间:2018-01-17 16:44:52

标签: python numpy copy

这个问题已经多次讨论过,但我仍然对此感到困惑。 以下代码段说明了问题:

a = np.arange(10)
m = a
m[0] = 1000
m
Out[106]: array([1000,    1,    2,    3,    4,    5,    6,    7,    8,    
9])
a
Out[107]: array([1000,    1,    2,    3,    4,    5,    6,    7,    8,    9])

现在让我们做

a = np.arange(10)
m = a
m = m + 1000
m
Out[102]: array([100, 101, 102, 103, 104, 105, 106, 107, 108, 109])
a
Out[103]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

我想在计算m = m + 1000时完全理解变量a未被修改的原因。我不明白这里的逻辑......

1 个答案:

答案 0 :(得分:6)

您发现a = a + ba += b之间存在差异。第一个创建 new 值(a + b)并将其分配给=a)左侧的变量。第二个更改 +=(由am持有的数组)左边的值以及保存此值的所有变量({{1 }和a)反映了变化。

如果您使用m进行尝试,+=a都会更改,因为它们都保持相同的值:

m

这表明:

a = np.arange(10)
m = a
m += 1000
a