Как преобразовать булевой массив в массив int

Я использую Scilab и хочу преобразовать массив булевых в массив целых чисел:

>>> x = np.array([4, 3, 2, 1]) >>> y = 2 >= x >>> y array([False, False, True, True], dtype=bool) 

В Scilab я могу использовать:

 >>> bool2s(y) 0. 0. 1. 1. 

или даже просто умножить его на 1:

 >>> 1*y 0. 0. 1. 1. 

Есть ли простая команда для этого в Python, или мне придется использовать цикл?

  • Как преобразовать OrderedDict в обычный dict в python3
  • Почему datetime.strptime не работает в этом простом примере?
  • построить динамический запрос SQL с помощью библиотеки python psycopg2 и использовать хорошие инструменты для преобразования типов
  • Преобразование pandas dataframe в массив numpy, сохранение индекса
  • Преобразование строки Unicode в строку в Python (содержащий дополнительные символы)
  • Boost :: Python - возможно автоматическое преобразование из dict -> std :: map?
  • Ошибка Python3: TypeError: Невозможно преобразовать объект 'bytes' в str неявно
  • Как преобразовать int в Enum в python?
  • 5 Solutions collect form web for “Как преобразовать булевой массив в массив int”

    Массивные массивы имеют astype метод. Просто сделайте y.astype(int) .

    Обратите внимание, что это даже не нужно делать, в зависимости от того, для чего вы используете массив. В большинстве случаев Bool будет автоматически преобразовываться в int, поэтому вы можете добавить его в массивы int без необходимости его явного преобразования:

     >>> x array([ True, False, True], dtype=bool) >>> x + [1, 2, 3] array([2, 2, 4]) 

    Метод 1*y работает в Numpy:

     >>> import numpy as np >>> x = np.array([4, 3, 2, 1]) >>> y = 2 >= x >>> y array([False, False, True, True], dtype=bool) >>> 1*y # Method 1 array([0, 0, 1, 1]) >>> y.astype(int) # Method 2 array([0, 0, 1, 1]) 

    Если вы запрашиваете способ конвертировать списки Python из Boolean в int, вы можете использовать map чтобы сделать это:

     >>> testList = [False, False, True, True] >>> map(lambda x: 1 if x else 0, testList) [0, 0, 1, 1] >>> map(int, testList) [0, 0, 1, 1] 

    Или с использованием списков:

     >>> testList [False, False, True, True] >>> [int(elem) for elem in testList] [0, 0, 1, 1] 

    Используя numpy, вы можете:

     y = x.astype(int) 

    Если вы использовали массив без numpy, вы можете использовать понимание списка :

     y = [int(val) for val in x] 

    Я знаю, что вы просили решения, не связанные с циклом, но единственные решения, которые я могу найти,

     map(int,y) 

    или:

     [i*1 for i in y] 

    или:

     import numpy y=numpy.array(y) y*1 

    Большую часть времени вам не нужно конвертировать:

     >>>array([True,True,False,False]) + array([1,2,3,4]) array([2, 3, 3, 4]) 

    Правильный способ сделать это:

     yourArray.astype(int) 

    или

     yourArray.astype(float) 
    Python - лучший язык программирования в мире.