Python - 重新排列3D数组中的元素

时间:2017-01-13 14:57:05

标签: python numpy

我有以下Numpy形状数组(4,4,3):

EnableRedisHttpSession

我正在寻找一个优雅的解决方案来重新排列该数组中的元素以获得以下3D数组形状(3,4,4):

a = [[[ 0  1  2]
      [ 3  4  5]
      [ 6  7  8]
      [ 9 10 11]]

      [[12 13 14]
       [15 16 17]
       [18 19 20]
       [21 22 23]]

      [[24 25 26]
       [27 28 29]
       [30 31 32]
       [33 34 35]]

      [[36 37 38]
       [39 40 41]
       [42 43 44]
       [45 46 47]]]

3 个答案:

答案 0 :(得分:2)

使用np.transpose -

a.transpose(2,0,1)

或使用np.rollaxis -

np.rollaxis(a,2,0) # Or np.rollaxis(a,-1,0)

答案 1 :(得分:1)

我能想到的最快的方法是将numpy的swapaxes函数与转置函数结合使用。

anew=np.swapaxes(a,0,1).T

答案 2 :(得分:0)

如果有人对纯Python提出同样的问题:

mylist = [[[1,2,3], [4,5,6]], [[7,8,9], [10, 11, 12]]]
flat = sum(sum(mylist, []), [])
groups = 3
print [flat[r::groups] for r in range(groups)]
  

[[1,4,7,10],[2,5,8,11],[3,6,9,12]]