Python / Numpy: конвертировать список bools в unsigned int

Какой самый быстрый (или самый «Pythonic») способ конвертировать

x = [False, False, True, True]

в12? (Если есть такой способ.)

Что, еслиx были вместоnumpy.array bools? Для этого есть специальная команда?

У меня есть большой массив логических значений m-by-n, где каждая строка n-элемента представляет один низкоразмерный хэш многомерного вектора признаков. (В приведенном выше примере n = 4.) Я хотел бы знать ответ, чтобы максимально сжать мои данные. Спасибо.

редактироватьСпасибо за ответы! Используя следующий тестовый код,

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

... вот время работы моего ноутбука Thinkpad:

Мой ответ: 4,26 сСвен Марнач 1: 7.88Эмиль Н: 8.51Свен Марнач 2: 8.72delnan: 10.14liori: 53,49

Конечно, я приветствую любые независимые тесты, которые могут подтвердить или опровергнуть мои данные!

редактировать: В моем ответе ниже меняетсяint(j) простоj все еще работает, но работает в шесть раз медленнее! Тогда, возможно, другие ответы стали бы быстрее, если бы bool был приведен с использованиемint, Но мне лень проверять все снова.

редактировать: liori опубликовал результаты независимых тестовВот.

Ответы на вопрос(10)

Ваш ответ на вопрос