import itertools
c = ([1, 1, 1, 1], [2, 3, 4, 5])
b = [[1,1,1,1],[2,3,4,5],[2,3,4,1],[4,5,6,7]]
a = itertools.filterfalse(lambda x: x in c, b)
This will give the result you require, here it will check the equality between lists and returns boolean values(True/False) and it will give us the result without any error. So, if you have array just convert it to lists and perform the same.
In the case of numpy arrays it doesn't return True or False but returns a boolean numpy array and bool(numpy_array) will lead to error and that's the reason for the error you are getting.
But if you have arrays then it won't return boolean values and if you don't want to change arrays to lists then you need to create the boolean values because of which you go for any and all approach as shown.
import itertools
c = (np.array([1, 1, 1, 1]), np.array([2, 3, 4, 5]))
b = [[1,1,1,1],[2,3,4,5],[2,3,4,1],[4,5,6,7]]
a = itertools.filterfalse(lambda x:any((x == arr).all() for arr in c), b)
Thank you!