从4D lis构建图像

2024-06-01 23:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大小列表(10,10,3,64)

这表示64个图像的列表,大小为10x10x3

我想创建一个大小为80x80x3的图像,其中每个图像并排。我不确定如何合并这些轴,以确保图像的完整性。在

举个例子,一个单一的图像是

myList[all][all][all][0]

Tags: 图像列表all例子完整性mylist
2条回答

您可以通过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)

给予

^{pr2}$

列表理解将图像的整个数组分割成存储在长度为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 )

解决这个问题的一个方法是重塑和置换维度。在

1)重塑形状,将最后一个尺寸拆分为两个尺寸。在

下一个调换两个调暗2)。在

3)最后再次整形,将前两个尺寸和下两个尺寸合并为一个尺寸。在

因此,我们会有这样的实现-

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

相关问题 更多 >