more readable, however I think this logic would not work
v_max can have both  0 and positive values
eg v_max = array([0, 1, 0, 1])

np.sign([0,1] 
array([ 0.,  1.,])

so sign v_max[0]  may not equal sign of v_max[1]
but they are both considered part of the same partition (since they are both >= 0 )