Numpy中轉(zhuǎn)置transpose、T和swapaxes的實(shí)例講解
利用Python進(jìn)行數(shù)據(jù)分析時(shí),Numpy是最常用的庫(kù),經(jīng)常用來(lái)對(duì)數(shù)組、矩陣等進(jìn)行轉(zhuǎn)置等,有時(shí)候用來(lái)做數(shù)據(jù)的存儲(chǔ)。
在numpy中,轉(zhuǎn)置transpose和軸對(duì)換是很基本的操作,下面分別詳細(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)于把原來(lái)位置在[0,1,2]的轉(zhuǎn)置到[1,0,2],對(duì)0來(lái)說(shuō),位置轉(zhuǎn)置后為[0,0,0],同理,對(duì)1 [0,0,1]來(lái)說(shuō),轉(zhuǎn)置后為[0,0,1],同理我們寫出所有如下:
其中第一列是值,第二列是轉(zhuǎn)置前位置,第三列是轉(zhuǎn)置后,看到轉(zhuǎn)置后位置,再看如上的結(jié)果,是不是就豁然開(kāi)朗了?
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]]])
再對(duì)比轉(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í)就是把順序全部顛倒過(guò)來(lái),如下:
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)置前后的位置,就不寫了。
下面說(shuō)說(shuō)swapaxes,軸對(duì)稱。
話不多,上結(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è)軸對(duì)換一下,不信再看一個(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í)沒(méi)有那么困難,不能只看。
紙上得來(lái)終覺(jué)淺,絕知此事要躬行!共勉!
以上這篇Numpy中轉(zhuǎn)置transpose、T和swapaxes的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析)
- Python?numpy.transpose使用詳解
- numpy.transpose()實(shí)現(xiàn)數(shù)組的轉(zhuǎn)置例子
- 對(duì)numpy下的軸交換transpose和swapaxes的示例解讀
- 詳解Numpy數(shù)組轉(zhuǎn)置的三種方法T、transpose、swapaxes
- 對(duì)numpy中的transpose和swapaxes函數(shù)詳解
- numpy.transpose對(duì)三維數(shù)組的轉(zhuǎn)置方法
- numpy中的transpose函數(shù)中具體使用方法
相關(guān)文章
基于Python執(zhí)行dos命令并獲取輸出的結(jié)果
這篇文章主要介紹了基于Python執(zhí)行dos命令并獲取輸出的結(jié)果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12PyQt5基本控件使用之消息彈出、用戶輸入、文件對(duì)話框的使用方法
本文主要介紹PyQt界面實(shí)現(xiàn)中常用的消息彈出對(duì)話框、提供用戶輸入的輸入框、打開(kāi)文件獲取文件/目錄路徑的文件對(duì)話框。 本文主要針對(duì)這三種控件的主要場(chǎng)景進(jìn)行介紹。感興趣的朋友跟隨小編一起看看吧2019-08-08Python3的介紹、安裝和命令行的認(rèn)識(shí)(推薦)
Python是著名的“龜叔”Guido van Rossum在1989年圣誕節(jié)期間,為了打發(fā)無(wú)聊的圣誕節(jié)而編寫的一個(gè)編程語(yǔ)言。這篇文章主要介紹了Python3的介紹、安裝和命令行的認(rèn)識(shí),需要的朋友可以參考下2018-10-10python 中的9個(gè)實(shí)用技巧,助你提高開(kāi)發(fā)效率
這篇文章主要介紹了python 中的9個(gè)實(shí)用技巧,幫助大家提高python開(kāi)發(fā)時(shí)的效率,感興趣的朋友可以了解下2020-08-08Python3顯示當(dāng)前時(shí)間、計(jì)算時(shí)間差及時(shí)間加減法示例代碼
這篇文章主要給大家介紹了關(guān)于Python3顯示當(dāng)前時(shí)間、計(jì)算時(shí)間差及時(shí)間加減法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Python 簡(jiǎn)單計(jì)算要求形狀面積的實(shí)例
今天小編就為大家分享一篇Python 簡(jiǎn)單計(jì)算要求形狀面積的實(shí)例,具有很好的參考價(jià)值2020-01-01