Python Numpy数组运算符x+;=y不同于x=x+;Y

Python Numpy数组运算符x+;=y不同于x=x+;Y,python,arrays,numpy,Python,Arrays,Numpy,当我运行下面的代码时: import numpy as np v = np.array([1, 1, 1]) u_list = [v] for i in range(2): v += np.array([i, i, i]) u_list.append(v) return u_list 返回[array([2,2,2])、array([2,2,2])、array([2,2,2])] 但是如果我运行相同的代码,第五行是v=v+np.array([I,I,I])它返回[array([1,

当我运行下面的代码时:

import numpy as np
v = np.array([1, 1, 1])
u_list = [v]

for i in range(2):
  v += np.array([i, i, i])
  u_list.append(v)

return u_list
返回
[array([2,2,2])、array([2,2,2])、array([2,2,2])]

但是如果我运行相同的代码,第五行是
v=v+np.array([I,I,I])
它返回
[array([1,1,1])、array([1,1,1])、array([2,2,2])


这是为什么?

v+=
更改了所在的数组

import numpy as np
v = np.array([1, 1, 1])
u_list = [v]

print(id(v))
for i in range(2):
    v += np.array([i, i, i])
    u_list.append(v)
    print(id(v))
印刷品:

4460459392
4460459392
4460459392
4462915792
4462918592
4462919072
所有数组都有相同的id,因此只有一个数组被引用了三次

v=v+
创建一个新数组:

v = np.array([1, 1, 1])
u_list = [v]

print(id(v))
for i in range(2):
    v = v + np.array([i, i, i])
    u_list.append(v)
    print(id(v))
印刷品:

4460459392
4460459392
4460459392
4462915792
4462918592
4462919072
这些数组具有不同的ID。因此,它们是不同的对象