Python / Numpy: convierte la lista de bools a int sin firmar

¿Cuál es la forma más rápida (o más "pitónica") de convertir

x = [False, False, True, True]

dentro12? (Si hay tal manera).

Y six eran en cambio unnumpy.array de bools? ¿Hay un comando especial para eso?

Tengo una gran matriz de booleanos m-por-n, donde cada fila de n elementos representa un hash único de baja dimensión de un vector de características de alta dimensión. (En el ejemplo anterior, n = 4.) Me gustaría saber la respuesta para comprimir mis datos tanto como sea posible. Gracias.

Editar: ¡Gracias por las respuestas! Usando el siguiente código de prueba,

t = 0
for iter in range(500):
    B = scipy.signbit(scipy.randn(1000,20))
    for b in B:
        t0 = time.clock()
        # test code here
        t1 = time.clock()
        t += (t1-t0)
print t

... aquí estaban los tiempos de ejecución en mi laptop Thinkpad:

Mi respuesta: 4.26 segundosSven Marnach 1: 7.88Emil H: 8.51Sven Marnach 2: 8.72delnan: 10,14liori: 53,49

¡Por supuesto, agradezco cualquier prueba independiente que pueda confirmar o refutar mis datos!

Editar: En mi respuesta a continuación, cambiandoint(j) simplementej Todavía funciona, ¡pero corre seis veces más lento! Entonces, tal vez las otras respuestas serían más rápidas si el bool se lanzara usandoint. Pero soy demasiado vago para probar todo de nuevo.

Editar: liori publicó resultados de pruebas independientesaquí.

Respuestas a la pregunta(10)

Su respuesta a la pregunta