提取3d numpy数组的某些列

时间:2016-11-22 12:36:49

标签: python numpy multidimensional-array

我想从3d numpy数组中提取某些列。想象一下像

这样的3d numpy数组
[[[ 65 234 169]
  [203 191 245]
  [ 36  58 196]
  [207 208 143]
  [251 208 187]]

 [[ 79  69 237]
  [ 13 124  42]
  [104 165  82]
  [170 178 178]
  [ 66  42 210]]

 [[ 40 163 219]
  [142  37 140]
  [ 75 205 143]
  [246  30 221]
  [ 16  98 102]]]

如果 - 例如 - 应该提取列2-4,我想得到一个像

这样的结果3d数组
[[[203 191 245]
  [ 36  58 196]
  [207 208 143]]

 [[ 13 124  42]
  [104 165  82]
  [170 178 178]]

 [[142  37 140]
  [ 75 205 143]
  [246  30 221]]]

我一直在玩数组索引和切片几个小时,但我不能让它工作。 anyboday可以帮助我吗?

提前致谢并致以最诚挚的问候。

1 个答案:

答案 0 :(得分:4)

In [12]: array
Out[12]: 
array([[[ 65, 234, 169],
    [203, 191, 245],
    [ 36,  58, 196],
    [207, 208, 143],
    [251, 208, 187]],

   [[ 79,  69, 237],
    [ 13, 124,  42],
    [104, 165,  82],
    [170, 178, 178],
    [ 66,  42, 210]],

   [[ 40, 163, 219],
    [142,  37, 140],
    [ 75, 205, 143],
    [246,  30, 221],
    [ 16,  98, 102]]])

In [13]: array[:, 1:4, :]
Out[13]: 
array([[[203, 191, 245],
    [ 36,  58, 196],
    [207, 208, 143]],

   [[ 13, 124,  42],
    [104, 165,  82],
    [170, 178, 178]],

   [[142,  37, 140],
    [ 75, 205, 143],
    [246,  30, 221]]])