我有一个大小为(10,10,3,64)
这表示64个大小为10x10x3
我想创建1张大小为80x80x3
的图片,其中每张图片并排显示。我不确定如何合并这些轴以确保图像完整性。
只是一个例子,一个单一的图像是
myList[all][all][all][0]
答案 0 :(得分:3)
IIUC解决这个问题的一种方法是重塑和换位。
1)重塑以将最后一个维度分成两个维度。
2)移调以使最后两个分开的暗角接近前两个暗角。)
3)最后再次重塑以将前两个dims和接下来的两个dim合并为一个dim。
因此,我们会有这样的实现 -
np.array(myList).reshape(10,10,3,8,8).transpose(0,3,1,4,2).reshape(80,80,3)
答案 1 :(得分: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)
列表推导将整个图像阵列分成存储在长度为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 )