np.where(a>threshold, upper, lower) Out[6]: array([[0, 1, 1, 1], [1, 1, 0, 1], [0, 1, 0, 1], [1, 0, 0, 1]])