Почему ndimage.convolve с использованием трехмерных массивов создает трехмерный массив вместо двухмерного?

Если я запускаю этот код:

x = np.random.uniform(-1,1,(3,3,3))

y = np.random.uniform(-1,1,(3,3,3))

z = ndimage.convolve(x, y, output=None, mode='reflect', cval=0.0, origin=0)

print(np.shape(z))

Он возвращает (3,3,3), и я не понимаю, почему он не создает массив (3,3). Любые объяснения будут оценены.


person YungKingGergus    schedule 02.11.2020    source источник


Ответы (1)


Согласно scipy docs, это многомерная свертка , что означает, что он скручивается во всех направлениях. Вы можете получить средний 2D-массив для своей цели. Или, в более общем случае, удалите свернутые элементы с подкладками из третьего измерения:

z = z[...,y.shape[-1]//2:-(y.shape[-1]//2)]
person Ehsan    schedule 02.11.2020