Convertir una matriz NumPy en un vector binario basado en un umbral

Tengo una matriz a continuación:

a=np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9]) 

Lo que quiero es convertir este vector en un vector binario basado en un umbral. tome umbral = 0.5 como ejemplo, elemento que mayor que 0.5 se convierte a 1, de lo contrario 0.
El vector de salida debería ser así:

 a_output = [0, 0, 0, 1, 1, 1] 

Cómo puedo hacer esto

np.where

 >>> np.where(a > 0.5, 1, 0) array([0, 0, 0, 1, 1, 1]) 

Enmascaramiento + astype

 >>> (a > .5).astype(int) array([0, 0, 0, 1, 1, 1]) 

np.select

 >>> np.select([a <= .5, a>.5], [np.zeros_like(a), np.ones_like(a)]) array([ 0., 0., 0., 1., 1., 1.])