Python NumPy - 三维阵列的角度切片

Eng*_*wza 7 python arrays numpy numpy-slicing numpy-ndarray

在NumPy工作,我了解如何使用本文从3D数组中切割2D数组.

根据我想切入的轴:

array = [[[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]]]
Run Code Online (Sandbox Code Playgroud)

切片会给我:

i_slice = array[0]

    [[0  1  2]
     [3  4  5]
     [6  7  8]]

j_slice = array[:, 0]

    [[0  1  2]
     [9  10 11]
     [18 19 20]]

k_slice = array[:, :, 0]

    [[0  3  6]
     [9  12 15]
     [18 21 24]]
Run Code Online (Sandbox Code Playgroud)

但是有可能以45度角切割?如:

j_slice_down = array[slice going down starting from index 0]

    [[0  1  2]
     [12 13 14]
     [24 25 26]]
Run Code Online (Sandbox Code Playgroud)

我能够在所有3轴上升或下降,甚至包裹所有方式...在黑暗的列表日期与许多for循环......但我相信在NumPy必须有更好的方法.

hpa*_*ulj 3

In [145]: arr[np.arange(3), np.arange(3),:]
Out[145]: 
array([[ 0,  1,  2],
       [12, 13, 14],
       [24, 25, 26]])
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以回答问题,但提供有关如何和/或为何解决问题的附加上下文将提高​​答案的长期价值。 (4认同)