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。因此,它们是不同的对象