在python中,我有numpy数组a0
,a1
和a2
,每个数组都引用不同的内容。我想转移引用名称和引用对象之间的关系,以使a2
现在指向之前由a1
指向的内容,而a1
现在指向所指向的内容由a0
之前。然后,我要让a0
指向新内容。
更具体地说,我想做这样的事情:
import numpy as np
a2=np.array([1,2,3,4])
a1=np.array([10,20,30,40])
a0=np.array([8,8,8,8])
a2=a1
a1=a0
# I want to assign new values to a0[0], a0[1], .., without affecting a1.
我可以在不复制值(例如,通过np.copy
且没有内存重新分配(例如,通过del
和np.empty
的情况下)吗?
答案 0 :(得分:2)
使用元组拆包交换诸如a,b=b,a
In [183]: a2=np.array([1,2,3,4])
...: a1=np.array([10,20,30,40])
...: a0=np.array([8,8,8,8])
...:
...:
In [184]:
In [185]: a2,a1=np.copy(a1),np.copy(a0)
In [186]: a0
Out[186]: array([8, 8, 8, 8])
In [187]: a1
Out[187]: array([8, 8, 8, 8])
In [188]: a2
Out[188]: array([10, 20, 30, 40])
您可以随意将a0
指向您想去的任何地方,而我认为您可以通过更改a0
来创建自己,而不用a1
或其他不影响np.copy
像copy.deepcopy
答案 1 :(得分:1)
不复制a0
就不可能问什么,否则a0
和a1
将指向同一个对象,而更改a0
将更改{ {1}}。因此,您应该这样做:
a1