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

带副本的numpy数组分配

带副本的numpy数组分配

海绵宝宝撒 2019-12-12 14:10:45
例如,如果我们有一个numpyarray A,并且我们想要一个具有相同元素的numpy数组B。以下(见下文)方法之间的区别是什么?什么时候分配额外的内存,什么时候不分配?B = AB[:] = A(与B[:]=A[:]?相同)numpy.copy(B, A)
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

  1. =A 创建参考

  2. B[:]=A 复制

  3. numpy.copy(B,A) 复制

后两个需要额外的内存。

要制作深拷贝,您需要使用 B = copy.deepcopy(A)



查看完整回答
反对 回复 2019-12-13
?
慕容708150

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

关于你第二个例子:B[:] = A它不使对象类型,例如数组的深层副本A = np.array([[1,2,3],[4,5]]); B = np.array([None,None], dtype='O')。现在尝试B[:] = A; B[0][0]=99,这将同时更改A和B中的第一个元素!据我所知,没有其他方法可以保证深度复制,甚至是一个numpy数组,也只能保证copy.deepcopy

查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

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