Python工具包numpy中tile函式的理解

2021-07-09 08:53:46 字數 1855 閱讀 5878

函式的形式是tile(a,reps)

tile函式是模板numpy\lib\shape_base中的函式。

目前接觸到的關於tile函式的乙個功能是:當a為array時,通過reps的取值來對a進行某一些維度上元素複製,以下是我對這一功能的理解。

假定a的維度為d,reps的長度為len

當d>=len時,將reps長度補足為d,即在reps前面加上d-len個1

例如:例1

a= array([0,0])

此時建立了乙個陣列變數a,它是乙個一維變數,在一維的維度上包含兩個元素:0和0,下面再執行一行**:

tile(a,2)

在上面的這行**中,reps為2,是個一維度,與陣列a維度相同,因此不需要在reps前台新增1進行維度的補充,那麼此時的2即是將陣列a在一維度上進行操作的數值,效果是將a一維度上的元素變成以前的2倍(即將原來的元素複製一次),最後的結果是:a=[0,0,0,0]。如果此時reps為3,效果是將a的一維度上的元素變成以前的3倍(即將原來的元素複製兩次),最後的結果是:a=[0,0,0,0,0,0]

特別地,如果reps中的數為1,則a的元素在相應維度上則保持不變,在本例中a不變,仍然為[0,0]

例2a=array([[1,2],[3.4]])

執行上行**後,建立了乙個二維陣列a,它在二維度上有兩個元素,分別是[1,2]和[3,4],對於二維度上的[1,2]這個元素,它在一維度上又有兩個元素分別為1和2,對於二維度上的[3.4]這個元素,它在一維度上也有兩個元素分別為3和4。

下面執行如下**:

tile(a,2)

此時reps為2,是一維度,因此前面要新增1來補充成與a相同的二維度即為(1,2),所以上行**等價於下行**:

tile(a,(1,2))

其中(1,2)的含義是:從左到右分別對應a的高維度到低維度的運算元,1對應的是a的二維度的運算元,2對應的是a的一維度的運算元。所以操作的效果是將a在二維度上的元素保持不變(運算元為1),將a在一維度上的元素變成以前的兩倍,即複製一次(運算元為2),因此最後的結果是:a=[[1,2,1,2],[3,4,3,4]]

同樣地,將上行**變成如下:tile(a,(2,3))

其中(2,3)的含義是:從左到右依次對應a的高維度到低維度的運算元,2對應的是a的二維度的運算元,3對應的是a的一維度的運算元。所以操作的效果是將a在二維度上元素變成以前的2倍,即複製一次(運算元為2),將a在一維度上的元素就以前的3倍,即複製兩次(運算元為3),因此最後的結果是:

[[1, 2, 1, 2, 1, 2],

[3, 4, 3, 4, 3, 4],

[1, 2, 1, 2, 1, 2],

[3, 4, 3, 4, 3, 4]]

當dtile函式的首先會將陣列a的維度提公升到與reps相同的維度,然後在根據相應維度的運算元對陣列a進行操作。

例3 a=array([1,2])

title(a,(1,2))

此時建立了乙個維度為1的陣列a,而reps的維度為2,因此tile函式會將陣列a提公升到二維,即從以前的[1,2]變成[[1,2]],提公升後的陣列a在二維維度上有乙個元素[1,2],對於二維維度的元素[1,2],它在一維維度上有兩個元素1和2。

然後進行各個維度的複製操作,在二維維度上保持不變(reps的第乙個運算元1對應著二維度上操作),在一維度上變成以前的2倍,即把以前的一維元素複製一次(reps的第二個運算元2對應著一維度上的操作),最後結果為:

a= [[1, 2, 1, 2]]

同樣地,如果將上行中的**改為tile(a,(2,2)),則最後的結果為:

a= [[1, 2, 1, 2],

[1, 2, 1, 2]]

Python工具包以及資源包

pip install whl 適用於2.x pip3 install whl 適用於2.x,3.x easy install python 官網 非官方 注意 如果安裝python安裝成功之後出現 dll引入錯誤問題 通常的做法,找到python安裝位置裡lib site pakage 相應的檔案...

python安裝wxpython工具包

wxpython是python語言的一套優秀的gui圖形庫,允許python程式設計師很方便的建立完整的 功能鍵全的gui使用者介面。wxpython是作為優秀的跨平台gui庫 wxwidgets 的python封裝和python模組的方式提供給使用者的。就如同python和wxwidgets一樣,...

python語言識別工具包

langid包 相當強大!def langidfunc print langid.classify we are family print langid.classify questa e una prova print langid.classify 我們都有乙個家 identifier lang...