dimensionnal -> dimensional

Also, this function seems quite complicated. Instead of recursively applying it, it would be easier to read if the mask was promoted to the dimension of the input array and simply used there, instead of breaking it down recursively. I was thinking a small snippet like this 

    if (len(vol.shape) - len(mask.shape)) == 1:
            return vol * np.squeeze(np.tile(mask[..., None], vol.shape[-1]))

    return vol * mask

The tiling is probably even unnecessary with proper braodcasting. Anyway, this snippet check for same dimension or 1 dimension less than the input and mask it.