如何获得 Numpy 数组切片的具体输出?

How to get the specific out put for Numpy array slicing?

x 是第 n 个自然数的 shape(n_dim,n_row,n_col) 数组 b 是具有元素 True,false

的 shape(2,) 布尔数组

    def array_slice(n,n_dim,n_row,n_col):
             x = np.arange(0,n).reshape(n_dim,n_row,n_col)
             b = np.full((2,),True)
             print(x[b])
             print(x[b,:,1:3]) 

预期输出

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]]]
[[[ 1  2]
  [ 6  7]
  [11 12]]]

我的输出:-

[[[ 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]]]
[[[ 1  2]
  [ 6  7]
  [11 12]]
 [[16 17]
  [21 22]
  [26 27]]]

一个例子:

In [83]: x= np.arange(24).reshape(2,3,4)

In [84]: b = np.full((2,),True)

In [85]: x
Out[85]: 
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]]])

In [86]: b
Out[86]: array([ True,  True])

有两个 True,b 选择第一维的两个平原:

In [87]: x[b]
Out[87]: 
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]]])

A b 真假混合:

In [88]: b = np.array([True, False])

In [89]: b
Out[89]: array([ True, False])

In [90]: x[b]
Out[90]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]]])