Could you post the shapes for all inputs, as the code fails in a broadcast:
    np.multiply(np.fft.ifftshift(1 - _filter), np.fft.fft2(arr, axes=axes))

ValueError: operands could not be broadcast together with shapes (24,24,1) (100,100,100) 

using:
filt = np.random.randn(24, 24)
arr = np.random.randn(100, 100, 100)

out_np = apply_filter_vector(filt, arr)

Also, how large is the abs().max() error you are seeing?