I have numpy array:
np.random.seed(100)
mask = np.random.choice([True, False], size=(10,3))
print (mask)
[[ True True False]
[False False False]
[ True True True] <- problem - all values True
[ True True False]
[ True True True] <- problem - all values True
[ True False True]
[ True False True]
[False True True]
[ True False False]
[False True True]]
Need in each row no all values True - so here can be only 0, 1 or 2 True because 3 'columns'.
Ugly solution is:
mask[:, -1] = False
print (mask)
[[ True True False]
[False False False]
[ True True False]
[ True True False]
[ True True False]
[ True False False]
[ True False False]
[False True False]
[ True False False]
[False True False]]
What is better and more generic solution?
mask[mask.all(1),-1] = 0? That would create a different one than the one posted with the ugly solution though.