numpy中的reshape函式詳解

2021-09-29 15:49:44 字數 1363 閱讀 9094

python中的numpy陣列有乙個reshape方法,我們時常使用,但是目前為止沒有對他進行深入的研究。在多維矩陣的情況下,reshape出來的,到底是什麼樣子的矩陣?所以嘗試構造乙個3維矩陣,剖析一下reshape的原理。

首先構造乙個【5,4,3】的三維矩陣a,具體數值如下圖所示

然後將其reshape成【5,12】的矩陣,看到底是如何變化的

在reshape中未加order引數時,結果如下圖所示

可以看出reshape操作是將第二維進行了切割,把4x3的矩陣變成了1x12的矩陣

嘗試加入不同order引數,發現不管是a還是c和f,結果都如沒加引數是一樣的。

如果想把a作為乙個整體,不對它進行拆分,也就是將a整體放在a矩陣的右側,那麼整體的shape應該為【4,15】的矩陣,嘗試reshape看看

如上圖,可以看出,未加任何引數時,會對第三維進行拆分,直至填滿矩陣的寬度,而不是我們想要的整體平移。此時嘗試更換不同的引數

引數為c時:

引數為f時:

可以看出,c是維度越靠後,變化越快,換句話說,就是從最後一維開始,按行優先填充為需要的矩陣。如果寫出程式的話,應該是下面這樣

變換示意圖:

引數為f時,維度越靠前,變化越快,從第一維開始,按列優先,填充為需要的矩陣,如果寫出程式的話,應該是下面這樣

變換示意圖:

上面大概就是reshape的用法,然而並不能滿足我的要求,所以還需要更換別的函式進行處理。

numpy中shape和reshape的用法

1 shape 在python中匯入numpy庫之後,我們可以通過矩陣的屬性shape獲取矩陣的維度。如圖所示 import numpy as np b np.array 1,2,3,4 5,6,7,8 print b print b.shape 輸出行數和列數 print b.shape 0 輸出...

numpy庫reshape用法詳解

numpy.reshape 重塑 給陣列乙個新的形狀而不改變其資料 numpy.reshape a,newshape,order c 引數 a array like 要重新形成的陣列。newshape int或tuple的整數 新的形狀應該與原始形狀相容。如果是整數,則結果將是該長度的1 d陣列。乙...

numpy之reshape注意事項

看一下這個陣列 66,65,9 乙個元素帶了9個變數,溫度 濕度 風速等等,常見的地理資料集 需要帶入模型裡計算,但是模型只認2d,需要重新reshape一下。然後就發現一些小細節,畢竟菜雞tat 看一下reshape的介紹 這裡有個order引數 order c 是行優先讀取 預設 order f...