-
Каков самый быстрый (или самый "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 сек
- Sven Marnach 1: 7.88
- Emil H: 8.51
- Свен Марнах 2: 8.72
- delnan: 10.14
- liori: 53.49
Конечно, я приветствую любые независимые тесты, которые могут подтвердить или опровергнуть мои данные!
Изменить: в моем ответе ниже изменение int(j)
на просто j
по-прежнему работает, но выполняется в шесть раз медленнее! Тогда, возможно, другие ответы станут быстрее, если bool будет запущен с помощью int
. Но я слишком ленив, чтобы снова проверить все.
Изменить: liori опубликовал результаты независимых тестов здесь.