2
我正在成形爲在陣列上如下如何將多維數組重塑爲2D圖像?
(64, 1, 64, 64)
這是事實,即分成64個補丁,每個貼片與64 * 64PX一個灰度圖像。
現在我需要重建它成一個512 * 512像素的圖像。
我使用
np.reshape(arr, (512, 512))
但當然並不如預期所產生的圖像嘗試。
我該如何解決這個問題?
我正在成形爲在陣列上如下如何將多維數組重塑爲2D圖像?
(64, 1, 64, 64)
這是事實,即分成64個補丁,每個貼片與64 * 64PX一個灰度圖像。
現在我需要重建它成一個512 * 512像素的圖像。
我使用
np.reshape(arr, (512, 512))
但當然並不如預期所產生的圖像嘗試。
我該如何解決這個問題?
這取決於你的補丁如何排列。但你可以嘗試的第一件事就是
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)
是剩下的事情。
你釘了它,非常感謝,這將需要我花了幾天才能找出重塑jiujitsu ... :) – pepe
只是一個受過教育的猜測;-)我會嘗試添加一些解釋到帖子。 –