2016-08-02 43 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)