Какой самый быстрый (или самый "питонический") способ преобразования
x = [False, False, True, True]
в 12
? (Если такой способ существует.)
Что, если бы x
был вместо numpy.array
bools? Есть ли для этого специальная команда?
У меня есть большой массив логических значений m на n, где каждая строка из n элементов представляет собой один низкоразмерный хеш многомерного вектора признаков. (В приведенном выше примере n = 4.) Я хотел бы знать ответ, чтобы максимально сжать мои данные. Спасибо.
Edit : Спасибо за ответы! Используя следующий тестовый код,
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:
Конечно, Я приветствую любые независимые тесты, которые могут подтвердить или опровергнуть мои данные!
Изменить : в моем ответе ниже изменение int (j)
на просто j
все еще работает, но работает в шесть раз медленнее! Тогда, возможно, другие ответы стали бы быстрее, если бы логическое значение было приведено с использованием int
. Но мне лень проверять все заново.
Edit : liori разместила результаты независимых тестов здесь .