您好,登錄后才能下訂單哦!
這篇文章主要介紹了python numpy數組復制使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
在使用python時我們經常會處理數組,有的時候是復制有的時候不是,這里也是初學者最容易誤解的地方,簡單講,可以分為下面三種情況:
不是復制的情況(No Copy at All)
import numpy as np a = np.arange(12) #a為一個序列 b = a #沒有創建新的對象 print('a的shape為:', a.shape) # 輸出a的尺寸 print('b是a嗎?', b is a) #ab 為同一個對象的兩個名字 b.shape = 3, 4 #將b的shape改變 print('a的shape變為:', a.shape) #a的shanpe也跟著改變了
輸出結果
a的shape為: (12,) b是a嗎? True a的shape變為: (3, 4)
查看或淺復制(View or Shallow Copy)
不同的數組對象可以分型相同的數據,view方法創建一個與原來數組相同的新對象
a = np.arange(12) c = a.view() # 建立一個和a一樣的c print('c未改變時a的shape為:', a.shape) # 輸出a的尺寸 print('c是a嗎?', c is a) print('c 是以a為基礎建立的嗎', c.base is a) c.shape = 3, 4 print('c改變后a的shape為:', a.shape)
輸出結果:
c是a嗎? False c 是以a為基礎建立的嗎 True a的shape為: (12,) a的shape為: (12,)
深復制(Deep Copy)
這個時候d是a的復制,只是單純的復制,兩者沒有一點關系
a = np.arange(12) d = a.copy() # 建立一個和a一樣的c print('d是a嗎?', d is a) print('d是以a為基礎建立的嗎', d.base is a)
輸出結果:
d是a嗎? False d是以a為基礎建立的嗎 False
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。