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

  1. Какой самый быстрый (или самый "питонический") способ преобразования

     x = [False, False, True, True]
    

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

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

  3. У меня есть большой массив логических значений 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 разместила результаты независимых тестов здесь .

12
задан Community 23 May 2017 в 12:17
поделиться