例如,如果我們有一個(gè)numpyarray A,并且我們想要一個(gè)具有相同元素的numpy數(shù)組B。以下(見下文)方法之間的區(qū)別是什么?什么時(shí)候分配額外的內(nèi)存,什么時(shí)候不分配?B = AB[:] = A(與B[:]=A[:]?相同)numpy.copy(B, A)
3 回答

qq_花開花謝_0
TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
=A
創(chuàng)建參考B[:]=A
復(fù)制numpy.copy(B,A)
復(fù)制
后兩個(gè)需要額外的內(nèi)存。
要制作深拷貝,您需要使用 B = copy.deepcopy(A)

千萬(wàn)里不及你
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
關(guān)于你第二個(gè)例子:B[:] = A
它不使對(duì)象類型,例如數(shù)組的深層副本A = np.array([[1,2,3],[4,5]]); B = np.array([None,None], dtype='O')
?,F(xiàn)在嘗試B[:] = A; B[0][0]=99
,這將同時(shí)更改A和B中的第一個(gè)元素!據(jù)我所知,沒有其他方法可以保證深度復(fù)制,甚至是一個(gè)numpy數(shù)組,也只能保證copy.deepcopy
添加回答
舉報(bào)
0/150
提交
取消