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