Numpy:復制理解 b = a、b = a.view()、d = a.copy()


一、復制形式 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

結果圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM