Numpy中轉(zhuǎn)置transpose、T和swapaxes的實(shí)例講解
利用Python進(jìn)行數(shù)據(jù)分析時(shí),Numpy是最常用的庫,經(jīng)常用來對數(shù)組、矩陣等進(jìn)行轉(zhuǎn)置等,有時(shí)候用來做數(shù)據(jù)的存儲。
在numpy中,轉(zhuǎn)置transpose和軸對換是很基本的操作,下面分別詳細(xì)講述一下,以免自己忘記。
In [1]: import numpy as np
In [2]: arr=np.arange(16).reshape(2,2,4)
In [3]: arr
Out[3]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
如上圖所示,將0-15放在一個(gè)2 2 4 的矩陣當(dāng)中,得到結(jié)果如上。
現(xiàn)在要進(jìn)行裝置transpose操作,比如
In [4]: arr.transpose(1,0,2)
Out[4]:
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
結(jié)果是如何得到的呢?
每一個(gè)元素都分析一下,0位置在[0,0,0],轉(zhuǎn)置為[1,0,2],相當(dāng)于把原來位置在[0,1,2]的轉(zhuǎn)置到[1,0,2],對0來說,位置轉(zhuǎn)置后為[0,0,0],同理,對1 [0,0,1]來說,轉(zhuǎn)置后為[0,0,1],同理我們寫出所有如下:
其中第一列是值,第二列是轉(zhuǎn)置前位置,第三列是轉(zhuǎn)置后,看到轉(zhuǎn)置后位置,再看如上的結(jié)果,是不是就豁然開朗了?
0 [0,0,0] [0,0,0] 1 [0,0,1] [0,0,1] 2 [0,0,2] [0,0,2] 3 [0,0,3] [0,0,3] 4 [0,1,0] [1,0,0] 5 [0,1,1] [1,0,1] 6 [0,1,2] [1,0,2] 7 [0,1,3] [1,0,3] 8 [1,0,0] [0,1,0] 9 [1,0,1] [0,1,1] 10 [1,0,2] [0,1,2] 11 [1,0,3] [0,1,3] 12 [1,1,0] [1,1,0] 13 [1,1,1] [1,1,1] 14 [1,1,2] [1,1,2] 15 [1,1,3] [1,1,3]
再看另一個(gè)結(jié)果:
In [20]: arr.T
Out[20]:
array([[[ 0, 8],
[ 4, 12]],
[[ 1, 9],
[ 5, 13]],
[[ 2, 10],
[ 6, 14]],
[[ 3, 11],
[ 7, 15]]])
In [21]: arr.transpose(2,1,0)
Out[21]:
array([[[ 0, 8],
[ 4, 12]],
[[ 1, 9],
[ 5, 13]],
[[ 2, 10],
[ 6, 14]],
[[ 3, 11],
[ 7, 15]]])
再對比轉(zhuǎn)置前后的圖看一下:
0 [0,0,0] [0,0,0] 1 [0,0,1] [1,0,0] 2 [0,0,2] [2,0,0] 3 [0,0,3] [3,0,0] 4 [0,1,0] [0,1,0] 5 [0,1,1] [1,1,0] 6 [0,1,2] [2,1,0] 7 [0,1,3] [3,1,0] 8 [1,0,0] [0,0,1] 9 [1,0,1] [1,0,1] 10 [1,0,2] [2,0,1] 11 [1,0,3] [3,0,1] 12 [1,1,0] [0,1,1] 13 [1,1,1] [1,1,1] 14 [1,1,2] [2,1,1] 15 [1,1,3] [3,1,1]
瞬間就明白轉(zhuǎn)置了吧!其實(shí)只要?jiǎng)邮謱憣懀己苋菀酌靼椎?。另外T其實(shí)就是把順序全部顛倒過來,如下:
In [22]: arr3=np.arange(16).reshape(2,2,2,2)
In [23]: arr3
Out[23]:
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
In [24]: arr3.T
Out[24]:
array([[[[ 0, 8],
[ 4, 12]],
[[ 2, 10],
[ 6, 14]]],
[[[ 1, 9],
[ 5, 13]],
[[ 3, 11],
[ 7, 15]]]])
In [25]: arr3.transpose(3,2,1,0)
Out[25]:
array([[[[ 0, 8],
[ 4, 12]],
[[ 2, 10],
[ 6, 14]]],
[[[ 1, 9],
[ 5, 13]],
[[ 3, 11],
[ 7, 15]]]])
轉(zhuǎn)置就是這樣子,具體上面aar3轉(zhuǎn)置前后的位置,就不寫了。
下面說說swapaxes,軸對稱。
話不多,上結(jié)果
In [27]: arr.swapaxes(1,2)
Out[27]:
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
In [28]: arr.transpose(0,2,1)
Out[28]:
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
發(fā)現(xiàn)了吧,其實(shí)swapaxes其實(shí)就是把矩陣中某兩個(gè)軸對換一下,不信再看一個(gè):
In [29]: arr3
Out[29]:
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
In [30]: arr3.swapaxes(1,3)
Out[30]:
array([[[[ 0, 4],
[ 2, 6]],
[[ 1, 5],
[ 3, 7]]],
[[[ 8, 12],
[10, 14]],
[[ 9, 13],
[11, 15]]]])
In [31]: arr3.transpose(0,3,2,1)
Out[31]:
array([[[[ 0, 4],
[ 2, 6]],
[[ 1, 5],
[ 3, 7]]],
[[[ 8, 12],
[10, 14]],
[[ 9, 13],
[11, 15]]]])
哈哈,只要?jiǎng)邮肿鲎?,?huì)發(fā)現(xiàn)其實(shí)沒有那么困難,不能只看。
紙上得來終覺淺,絕知此事要躬行!共勉!
以上這篇Numpy中轉(zhuǎn)置transpose、T和swapaxes的實(shí)例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對比分析)
- Python?numpy.transpose使用詳解
- numpy.transpose()實(shí)現(xiàn)數(shù)組的轉(zhuǎn)置例子
- 對numpy下的軸交換transpose和swapaxes的示例解讀
- 詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes
- 對numpy中的transpose和swapaxes函數(shù)詳解
- numpy.transpose對三維數(shù)組的轉(zhuǎn)置方法
- numpy中的transpose函數(shù)中具體使用方法
相關(guān)文章
Python 圖片轉(zhuǎn)數(shù)組,二進(jìn)制互轉(zhuǎn)操作
這篇文章主要介紹了Python 圖片轉(zhuǎn)數(shù)組,二進(jìn)制互轉(zhuǎn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Python構(gòu)建一個(gè)文檔掃描器的實(shí)現(xiàn)
本文主要介紹了Python構(gòu)建一個(gè)文檔掃描器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python語言實(shí)現(xiàn)科學(xué)計(jì)算器
這篇文章主要為大家詳細(xì)介紹了Python語言實(shí)現(xiàn)科學(xué)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
python代碼如何實(shí)現(xiàn)切換中英文輸入法
這篇文章主要介紹了python代碼如何實(shí)現(xiàn)切換中英文輸入法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
基于python實(shí)現(xiàn)ROC曲線繪制廣場解析
這篇文章主要介紹了基于python實(shí)現(xiàn)ROC曲線繪制廣場解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python 根據(jù)列表批量下載網(wǎng)易云音樂的免費(fèi)音樂
這篇文章主要介紹了python 根據(jù)列表下載網(wǎng)易云音樂的免費(fèi)音樂,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-12-12
python使用ddddocr庫識別滑動(dòng)驗(yàn)證碼簡單代碼示例
這篇文章主要介紹了如何使用ddddocr庫來識別滑塊驗(yàn)證碼,并提供了一個(gè)示例代碼和識別結(jié)果,同時(shí)提醒注意ddddocr庫的大小限制,可能會(huì)影響某些無服務(wù)器函數(shù)的部署,需要的朋友可以參考下2024-11-11

