2016-08-02 44 views
2

我有大小的列表(10,10,3,64)構建圖像

這代表尺寸爲64個的圖像的列表10x10x3

我想創建大小80x80x3,的1個圖像,其中每個圖像是並排。我不確定如何合併這些軸以確保圖像完整性。

只是一個例子,一個勁兒地圖像是解決這將是與重塑和置換尺寸

myList[all][all][all][0] 
+1

所以,'np.array(myList).shape'會是'(10,10,3,64)',對不對? – Divakar

回答

3

IIUC一種方式。

1)重塑將最後一個維度拆分爲兩個維度。

2)移調使最後兩個分裂變暗接近前兩個變暗)。 3)最後重新塑形,將前兩個變暗和後兩個變暗合併成一個變暗。

因此,我們必須像這樣的實現 -

np.array(myList).reshape(10,10,3,8,8).transpose(0,3,1,4,2).reshape(80,80,3) 
1

您可以通過np.concatenate和嵌套列表內涵試試這個,例如:

arr = np.array(mylist) 

arr2 = np.concatenate([ np.concatenate([arr[...,i + 8*j] for i in np.arange(8)],axis=0) for j in np.arange(8)],axis=1) 

print(arr2.shape) 

(80, 80, 3) 

列表解析將全部圖像分解爲ind存儲在長度爲8的列表中的單個圖像,並且連接然後從這些列表中形成數組,其中按順序存儲每個圖像。

注意。只需更改所用的數字,就可以相對容易地改變您想要平鋪圖像的方式。例如,如果你想12x4平鋪,而不是8x8

arr2 = np.concatenate([ np.concatenate([arr[...,i + 12*j] for i in np.arange(12)],axis=0) for j in np.arange(4)],axis=1)