python?reshape和transpose的區(qū)別小結(jié)
reshape()
和 transpose()
是用于改變數(shù)組或張量形狀的兩種不同方法,它們的主要區(qū)別在于如何重新排列元素以及是否可以改變軸的順序。
1 reshape()
reshape()
函數(shù)用于改變數(shù)組或張量的形狀,但是不改變元素的排列順序。它只是簡單地將數(shù)組的維度重新排列,但不改變維度之間的關(guān)系。reshape()
只是改變了張量的視圖,不會對數(shù)據(jù)進行重排或轉(zhuǎn)置。- 例如,對于一個形狀為 (2, 3, 4) 的數(shù)組,通過
reshape(3, 2, 4)
可以將其形狀變?yōu)?(3, 2, 4),但是數(shù)組的元素排列順序不變。 reshape()
只需滿足新形狀的元素數(shù)量與原始形狀相同即可。
2 transpose()
transpose()
函數(shù)用于交換數(shù)組或張量的軸的順序,從而改變元素的排列順序。- 它可以靈活地重新排列數(shù)組的軸,以滿足不同的需求。
- 例如,對于一個形狀為 (2, 3, 4) 的數(shù)組,通過
transpose(1, 0, 2)
可以將其形狀變?yōu)?(3, 2, 4),同時改變了軸的順序。 transpose()
可以用于任意地改變數(shù)組軸的順序,但需要明確指定新的軸順序。
3 我遇到的問題
問題:將shape為(1, 72, 1, 169, 253)的張量變?yōu)閟hape為(1, 169, 253, 72, 1)的張量 并且不改變數(shù)據(jù)
目的是:進行維度順序的改變,但不改變他們的數(shù)據(jù)結(jié)構(gòu)
一開始我使用的是reshape()
preds = preds.reshape(-1, preds.shape[3], preds.shape[4], preds.shape[1], preds.shape[2])
這樣得到的結(jié)果是錯誤的,直接按照【元素本身的排列順序】處理,破壞了數(shù)據(jù)的空間結(jié)構(gòu)
因此,我得到了錯誤的結(jié)果
進行修改,
preds_new = np.transpose(preds, (0, 3, 4, 1, 2))
最終得到:
到此這篇關(guān)于python reshape和transpose的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)python reshape transpose內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python四個坐標(biāo)點對圖片區(qū)域最小外接矩形進行裁剪
在圖像裁剪操作中,opencv和pillow兩個庫都具有相應(yīng)的函數(shù),如果想要對目標(biāo)的最小外接矩形進行裁剪該如何操作呢?本文就來詳細(xì)的介紹一下2021-06-06python3新特性函數(shù)注釋Function Annotations用法分析
這篇文章主要介紹了python3新特性函數(shù)注釋Function Annotations用法,結(jié)合實例形式分析了Python3函數(shù)注釋的定義方法與使用技巧,需要的朋友可以參考下2016-07-07Python使用redis pool的一種單例實現(xiàn)方式
這篇文章主要介紹了Python使用redis pool的一種單例實現(xiàn)方式,結(jié)合實例形式分析了Python操作redis模塊實現(xiàn)共享同一個連接池的相關(guān)技巧,需要的朋友可以參考下2016-04-04Flask的圖形化管理界面搭建框架Flask-Admin的使用教程
Flask-Admin是一個為Python的Flask框架服務(wù)的微型框架,可以像Django-Admin那樣為用戶生成Model層面的數(shù)據(jù)管理界面,接下來就一起來看一下Flask的圖形化管理界面搭建框架Flask-Admin的使用教程2016-06-06