A = np.arange(8).reshape(2,2,2)
B = np.ones(shape=(8,4,2,2))
Общее вещание работает, если измерения одинаковы или если одно измерение равно 1, поэтому мы делаем это;
a = A[np.newaxis, :, np.newaxis, :, :]
b = B[:, np.newaxis, :, :, :]
a.shape # <- (1,2,1,2,2)
b.shape # <- (8,1,4,2,2)
Теперь, когда вы можете делать вещание
c = a - b
c.shape # <- (8,2,4,2,2)
И когда вы изменяете форму, компоненты (2x4 = 8) выравниваются.
c.reshape(8,-1,2,2)
Порядок расположения новых осей требует изменения формы, поэтому будьте осторожны с этим.