У меня есть функция ниже для обрезки N-мерного массива:
def Crop(array, array_shape, bounding_shape):
start = tuple(map(lambda a, da: (a-da)//2, array_shape, bounding_shape))
end = tuple(map(operator.add, start, bounding_shape))
slices = tuple(map(slice, start, end))
return array[slices]
a = np.random.randn(5, 5, 100,100)
# Crop to
b = Crop(a, a.shape, [1, 1, 25,40]) #returns cropped array of size [1, 1, 25,40]
Как я могу переписать это, чтобы игнорировать первые два элемента массива и ограничивающую форму?
Для пример:
a = np.random.randn(5, 5, 100,100)
# Crop to
b = Crop(a, a.shape, [25,40]) #returns cropped array of size [5, 5, 25,40]