1。我使用cv2.imread
读取numpy数组中的大图像(1234 * 1624 * 3)
2。我使用cv2.dnn.blobFromImage
将其转换为(1,3,1234,1624)numpy数组
3。我使用tolist()
将其转换为列表中的4D列表
我的问题:
如何转置此列表的轴
从(1,3,1234,1624)到(1,1234,1624,3)?
我先尝试了np.transpose(image, (0, 2, 3, 1))
,然后尝试了tolist()
,但它似乎非常慢。因此,我想以列表形式进行转置。
我已经检查了下面的问题,它似乎很快,但是只能转置2D列表 documentation
非常感谢!
更新:
我有一个名为temp的列表。
len(temp)=1
len(temp[0])=3
len(temp[0][0])=1234
len(temp[0][0][0])=1624
我想将其轴移至
len(temp)=1
len(temp[0])=1234
len(temp[0][0])=1624
len(temp[0][0][0])=3
如何处理temp1=list(map(list, zip(*temp))
?
答案 0 :(得分:1)
可以做到无numpy且纯功能,但这并不漂亮:
from itertools import starmap, repeat
a = np.ones((1,3,1234,1624)).tolist()
b = list(map(list, map(map, repeat(list), map(starmap, repeat(zip), starmap(zip, a)))))
np.shape(b)
# (1, 1234, 1624, 3)