转置 ND 列表列表
Transpose ND list of lists
1.I使用cv2.imread
读取numpy数组中的大图(1234*1624*3)
2.I 使用 cv2.dnn.blobFromImage
将其转换为 (1,3,1234,1624) numpy 数组
3.I 使用 tolist()
将其转换为 lists
中的 4D 列表
我的问题:
如何转置此列表的轴
从 (1,3,1234,1624) 到 (1,1234,1624,3)?
我先尝试 np.transpose(image, (0, 2, 3, 1))
,然后再尝试 tolist()
,但速度似乎很慢。因此,我想以列表形式进行转置。
我检查了下面的问题似乎很快但只能转置2D列表
Transpose list of lists
非常感谢!!
更新:
我有一个名为 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))
怎么办?
可以做到 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)
1.I使用cv2.imread
读取numpy数组中的大图(1234*1624*3)
2.I 使用 cv2.dnn.blobFromImage
将其转换为 (1,3,1234,1624) numpy 数组
3.I 使用 tolist()
将其转换为 lists
我的问题:
如何转置此列表的轴
从 (1,3,1234,1624) 到 (1,1234,1624,3)?
我先尝试 np.transpose(image, (0, 2, 3, 1))
,然后再尝试 tolist()
,但速度似乎很慢。因此,我想以列表形式进行转置。
我检查了下面的问题似乎很快但只能转置2D列表 Transpose list of lists
非常感谢!!
更新:
我有一个名为 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))
怎么办?
可以做到 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)