1

1.我用cv2.imreadnumpy数组(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 列表 转置列表列表

非常感激!!

更新:

我有一个名为 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))

4

1 回答 1

1

它可以完成 numpy-less 和纯粹的功能,但它并不漂亮:

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)
于 2019-07-03T09:00:58.070 回答