为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2021-08-11 16:44:31
在 python 中,我有 numpy 数组a0, a1, 和a2,每个数组指的是不同的内容。我想改变引用名称和引用对象之间的关系,这样a2现在将指向a1之前指向的内容,a1现在将指向之前指向的内容a0。然后,我想让a0指向一个新的内容。更具体地说,我想做这样的事情:import numpy as npa2=np.array([1,2,3,4])a1=np.array([10,20,30,40])a0=np.array([8,8,8,8]) a2=a1a1=a0# I want to assign new values to a0[0], a0[1], .., without affecting a1. 我可以在不复制值(例如 by np.copy)和不重新分配内存(例如 bydel和np.empty)的情况下执行此操作吗?
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

使用元组解包来交换值有点像 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


查看完整回答
反对 回复 2021-08-11
?
HUH函数

TA贡献1836条经验 获得超4个赞

什么是你问的是不可能不做的副本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 = a1

a1 = a0.copy()


# let's change a0

a0[0] = 9


# check

a0

Out[31]: array([9, 8, 8, 8])


a1

Out[32]: array([8, 8, 8, 8])


a2

Out[33]: array([10, 20, 30, 40])


查看完整回答
反对 回复 2021-08-11
  • 2 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信