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

标签 python numpy

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

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, 4, 4) 的 3D 数组:

a_new = [[[ 0  3  6  9]
          [12 15 18 21]
          [24 27 30 33]
          [36 39 42 45]]

         [[ 1  4  7 10]
          [13 16 19 22]
          [25 28 31 34]
          [37 40 43 46]]

         [[ 2  5  8 11]
          [14 17 20 23]
          [26 29 32 35]
          [38 41 44 47]]]

最佳答案

使用np.transpose -

a.transpose(2,0,1)

或者使用np.rollaxis -

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

关于Python - 重新排列 3D 数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41637400/

相关文章:

python MySQLdb不会插入到数据库中

python - 具有流程控制的嵌套列表理解

java - 在 python 中使用枚举创建子类的新实例

python - 有选择地否定数组中的元素

python - 在 python 中使用 numpy 进行列数学运算

python - backports/lzma/_lzmamodule.c :115:18: fatal error: lzma. h:没有这样的文件或目录

python - 通过 SPSS 回归映射 Python for 循环

python - 区域内的 Numpy 聚合

python - 通过掩码选择 numpy 数组的元素并保留原始尺寸

python - 使用numpy.any匹配opencv中的颜色会产生奇怪的结果