转置ND列表清单

时间:2019-07-03 06:20:01

标签: python list numpy transpose cv2

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))

1 个答案:

答案 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)