多次切片2D数组以在NumPy中获得3D数组

时间:2020-07-04 07:58:15

标签: numpy numpy-slicing

给出2D数组:

samples = np.array(
              [
                  [1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12],
                  [13, 14, 15, 16]
              ]
          )

和形状(n,2)的两个2D数组(切片):

slices_x = np.array(
               [
                   [0,2],
                   [1,3]
               ]
           )

slices_y = np.array(
               [
                   [1,3],
                   [0,2]
               ]
           )

我想像下面这样切片数组:

result = []
for slice_x, slice_y in zip(slices_x, slices_y):
    result.append(samples[slice_x[0]:slice_x[1], slice_y[0]:slice_y[1]])
result = np.stack(result)

在这种情况下将获得结果(形状为(2,2,2)):

[
    [
        [2, 3],
        [6, 7]
    ],
    [
        [5, 6],
        [9, 10]
    ]
]

换句话说,result[i]

给出
samples[slice_x[i][0]:slice_x[i][1], slice_y[i][0]:slice_y[i][1]]

有没有有效的方法来实现这一目标?

0 个答案:

没有答案