如何在python中移动numpy数组名称引用的内容

时间:2018-11-08 08:12:25

标签: python numpy

在python中,我有numpy数组a0a1a2,每个数组都引用不同的内容。我想转移引用名称和引用对象之间的关系,以使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且没有内存重新分配(例如,通过delnp.empty的情况下)吗?

2 个答案:

答案 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.copycopy.deepcopy

答案 1 :(得分:1)

不复制a0就不可能问什么,否则a0a1将指向同一个对象,而更改a0将更改{ {1}}。因此,您应该这样做:

a1