转置3D列表

时间:2019-05-08 07:11:09

标签: python list 3d

我已经尝试过以下提到的代码:

counts=[[[(col.count(i)) for i in range(1,n)] for col in matrix] for matrix in lists] 
print(counts)

代码给了我

[[[1, 1, 1, 1, 0], [1, 1, 1, 0, 1], [1, 1, 0, 1, 1]], [[4, 0, 0, 0, 0], [1, 2, 1, 0, 0], [0, 0, 1, 3, 0]]]

此输出

此处已创建3、5个元素列表。我想要5、3元素列表。输出应如下所示:

 [[[1, 1, 1], [1, 0, 1], [1, 1, 0], [1, 1, 1], [0, 1, 1]], [[4, 0, 0], [0, 0, 1], [2, 1, 0], [0, 0, 0], [1, 3, 0]]]

应该在“计数”列表上执行哪种工作,以便获得所需的输出。

1 个答案:

答案 0 :(得分:0)

据我所知,你并没有真正调换任何东西。这只是一个重塑。 numpy可让您通过以下方式做到这一点:

import numpy as np

lst = [[[1, 1, 1, 1, 0], [1, 1, 1, 0, 1], [1, 1, 0, 1, 1]], 
       [[4, 0, 0, 0, 0], [1, 2, 1, 0, 0], [0, 0, 1, 3, 0]]]
arr = np.array(lst)
res = arr.reshape((2, 5, 3))

给出:

[[[1 1 1]
  [1 0 1]
  [1 1 0]
  [1 1 1]
  [0 1 1]]

 [[4 0 0]
  [0 0 1]
  [2 1 0]
  [0 0 0]
  [1 3 0]]]