猿问

带副本的numpy数组分配

例如,如果我们有一个numpyarray A,并且我们想要一个具有相同元素的numpy数组B。


以下(见下文)方法之间的区别是什么?什么时候分配额外的内存,什么时候不分配?


B = A

B[:] = A(与B[:]=A[:]?相同)

numpy.copy(B, A)


海绵宝宝撒
浏览 248回答 3
3回答

梵蒂冈之花

=A 创建参考B[:]=A 复制numpy.copy(B,A) 复制后两个需要额外的内存。要制作深拷贝,您需要使用 B = copy.deepcopy(A)

慕容708150

关于你第二个例子: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
随时随地看视频慕课网APP

相关分类

Python
我要回答