Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
I use Scilab, and want to convert an array of booleans into an array of integers:
>>> x = np.array([4, 3, 2, 1])
>>> y = 2 >= x
array([False, False, True, True], dtype=bool)
In Scilab I can use:
>>> bool2s(y)
0. 0. 1. 1.
or even just multiply it by 1:
0. 0. 1. 1.
Is there a simple command for this in Python, or would I have to use a loop?
–
–
Numpy arrays have an astype method. Just do y.astype(int).
Note that it might not even be necessary to do this, depending on what you're using the array for. Bool will be autopromoted to int in many cases, so you can add it to int arrays without having to explicitly convert it:
array([ True, False, True], dtype=bool)
>>> x + [1, 2, 3]
array([2, 2, 4])
–
–
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])
If you are asking for a way to convert Python lists from Boolean to int, you can use map to do it:
>>> 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]
Or using list comprehensions:
>>> testList
[False, False, True, True]
>>> [int(elem) for elem in testList]
[0, 0, 1, 1]
–
–
Most of the time you don't need conversion:
>>>array([True,True,False,False]) + array([1,2,3,4])
array([2, 3, 3, 4])
The right way to do it is:
yourArray.astype(int)
yourArray.astype(float)
I know you asked for non-looping solutions, but the only solutions I can come up with probably loop internally anyway:
map(int,y)
[i*1 for i in y]
import numpy
y=numpy.array(y)
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.