一、復制形式 1:b = a 用等號(=)賦值,內存一樣,a變化 ,b也會變化
import numpy as np a = np.arange(12) b = a print(b is a) # 返回 True b.shape = (3,4) print ("a.shape=",a.shape) # a.shape= (3, 4) print (id(a)) # 2493855732640 print (id(b)) # 2493855732640
二、復制形式 2:c = a.view()進行復制,a和c的內存位置一樣,c的值改變a也會對應改變,但c結構變化,a不會變化
import numpy as np c = a.view() # 將 a 復制給 c print(c is a) print("c=",c) c.shape = (2,6) # 改變 c 的結構為2行6列,看 a 是否會變化 print("c.shape=",c.shape) print ("a.shape=",a.shape) c[0,4] = 1234 # 改變 矩陣c 第0行4列的值,看 a 的值是否會變化 print("c=",c) print("a=",a) print (id(a)) # 2493855144416 print (id(b)) # 2493855144416
結果圖:
三、復制形式 3:d = a.copy() ,d和a的內存地址不一樣,當 d 數值改變時,a 不會改變
import numpy as np d = a.copy() print(d is a) # False d[0,0] = 9999 print (d) print (a) print(id(d)) # 2493855735440 print(id(a)) # 2493855732640
結果圖: