這篇文章主要介紹了python numpy數組復制使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
在使用python時我們經常會處理數組,有的時候是復制有的時候不是,這里也是初學者最容易誤解的地方,簡單講,可以分為下面三種情況:
不是復制的情況(No Copy at All)
1
2
3
4
5
6
7
|
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也跟著改變了 |
輸出結果
1
2
3
|
a的shape為: (12,) b是a嗎? True a的shape變為: (3, 4) |
查看或淺復制(View or Shallow Copy)
不同的數組對象可以分型相同的數據,view方法創建一個與原來數組相同的新對象
1
2
3
4
5
6
7
|
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) |
輸出結果:
1
2
3
4
|
c是a嗎? False c 是以a為基礎建立的嗎 True a的shape為: (12,) a的shape為: (12,) |
深復制(Deep Copy)
這個時候d是a的復制,只是單純的復制,兩者沒有一點關系
1
2
3
4
|
a = np.arange( 12 ) d = a.copy() # 建立一個和a一樣的c print ( 'd是a嗎?' , d is a) print ( 'd是以a為基礎建立的嗎' , d.base is a) |
輸出結果:
1
2
|
d是a嗎? False d是以a為基礎建立的嗎 False |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/daniumiqi/p/12134083.html