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 опубликовал результаты независимых тестовВот.