S = (np.diff(A4D.reshape(-1, 4)[:, (f.ravel() == 1)], 1) == 0).all(1)
out = (S.reshape(Mh, N)[:, (None), :, (None)] * f[:, (None), :]).reshape(M, -1)
Эффективное применение функции к массиву numpy с движущимся окном