視圖(淺復(fù)制)只是原有數(shù)據(jù)的一個(gè)引用,通過(guò)該引用可訪問(wèn)、操作原有數(shù)據(jù),如果我們對(duì)視圖進(jìn)行修改,它會(huì)影響原始數(shù)據(jù),因?yàn)闇\復(fù)制共享內(nèi)存。
副本(深復(fù)制)是對(duì)數(shù)據(jù)的完整拷貝,如果我們對(duì)副本進(jìn)行修改,它不會(huì)影響到原始數(shù)據(jù),因?yàn)樯顝?fù)制不共享內(nèi)存。
調(diào)用ndarray的view()方法會(huì)產(chǎn)生一個(gè)視圖,下面通過(guò)示例來(lái)看一下。
importnumpyasnpa=np.
arange(6).reshape(2,3)
#創(chuàng)建視圖
b=a.view()
print('a的id:',id(a))
print('b的id:',id(b))
#修改b的形狀
b.shape=3,2
print('a的形狀:')
print(a)
print('b的形狀:')
print(b)
print(aisb)
調(diào)用ndarray的copy()方法會(huì)產(chǎn)生一個(gè)副本,下面通過(guò)示例來(lái)看一下。
importnumpyasnpa=np.
arange(1,6)
#創(chuàng)建副本
b=a.copy()
print(aisb)
b[1]=10
print(a[1])
print(b[1])
以上內(nèi)容為大家介紹了python副本與視圖,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。