给出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]]
有没有有效的方法来实现这一目标?