为什么我的numpy矩阵在分配之前得到更新?

时间:2019-02-01 04:11:35

标签: python python-3.x numpy

这是我的代码

import numpy as np
v = np.zeros(4)
backup = np.zeros(4)

for i in range(3):
   backup = v
   v[0] = 1
   print(backup)

我的输出是:

[1. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]

但是我期望:

[0. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]

为什么备份矩阵在分配前会更新?

2 个答案:

答案 0 :(得分:4)

您并不是真的在做备份:您只是在做另一个参考。

制作副本可以解决该问题:

import numpy as np
v = np.zeros(4)
backup = np.zeros(4)

for i in range(3):
    backup = v.copy()
    v[0] = 1
    print(backup)

[0. 0. 0. 0.]
[1. 0. 0. 0.]
[1. 0. 0. 0.]

答案 1 :(得分:1)

我认为backup = v没有复制它,只是在分配值。