例如,如果我们有一个numpyarray A,并且我们想要一个具有相同元素的numpy数组B。以下(见下文)方法之间的区别是什么?什么时候分配额外的内存,什么时候不分配?B = AB[:] = A(与B[:]=A[:]?相同)numpy.copy(B, A)
3 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
=A
创建参考B[:]=A
复制numpy.copy(B,A)
复制
后两个需要额外的内存。
要制作深拷贝,您需要使用 B = copy.deepcopy(A)
慕容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
添加回答
举报
0/150
提交
取消