2017-04-16 62 views
2

我正在成形爲在陣列上如下如何將多維數組重塑爲2D圖像?

(64, 1, 64, 64) 

這是事實,即分成64個補丁,每個貼片與64 * 64PX一個灰度圖像。

現在我需要重建它成一個512 * 512像素的圖像。

我使用

np.reshape(arr, (512, 512)) 

但當然並不如預期所產生的圖像嘗試。

我該如何解決這個問題?

回答

4

這取決於你的補丁如何排列。但你可以嘗試的第一件事就是

image.reshape(8, 8, 64, 64).swapaxes(1, 2).reshape(512, 512) 

這是假設原來的零維列出了補丁逐行,即0-7補丁的第一排從左至右,8-15第二排等。

第一次重塑重新建立該排列,在選擇索引i後,對於軸0和1,j代表第i + 1行中的第j + 1個補丁。

現在到了有趣的位:當通過重塑合併軸:

  • 僅鄰近尺寸可以組合
  • 所有,但在每個塊將被分散

由於我們的最右邊的軸想要將每個補丁保存在一起,我們必須重新排列,以使當前軸2和3成爲塊的最右邊成員。這就是swapaxes所做的。

現在形狀是(8,64,8,64),軸1和3是內部斑點座標。結合兩對(8, 64 -> 512 8, 64 -> 512)是剩下的事情。

+0

你釘了它,非常感謝,這將需要我花了幾天才能找出重塑jiujitsu ... :) – pepe

+0

只是一個受過教育的猜測;-)我會嘗試添加一些解釋到帖子。 –