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

在 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. 

我可以在不复制值(例如 by np.copy)和不重新分配内存(例如 bydel和np.empty)的情况下执行此操作吗?


千万里不及你
浏览 159回答 2
2回答

慕哥9229398

使用元组解包来交换值有点像 a,b=b,aIn [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]: a0Out[186]: array([8, 8, 8, 8])In [187]: a1Out[187]: array([8, 8, 8, 8])In [188]: a2Out[188]: array([10, 20, 30, 40])你可以随意指出a0你想要的地方,我不认为你可以创造摆脱变化a0而不影响a1没有np.copy或其他类似的东西copy.deepcopy

HUH函数

什么是你问的是不可能不做的副本a0,否则a0和a1将指向同一个对象,改变a0将改变a1。所以你应该这样做:a2 = np.array([1,2,3,4])a1 = np.array([10,20,30,40])a0 = np.array([8,8,8,8]) a2 = a1a1 = a0.copy()# let's change a0a0[0] = 9# checka0Out[31]: array([9, 8, 8, 8])a1Out[32]: array([8, 8, 8, 8])a2Out[33]: array([10, 20, 30, 40])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python