1

I have a numpy array where it is an array of strings that say 'true' and 'false'. How would I change it into a boolean array? Code:

from astropy.table import Table
import numpy as np

cat = '/home/myname/catalogue.csv'  
cat = Table.read(cat, format="ascii")

check = np.array(cat['IsTrue'])

The column 'check' currently prints out:

   ['true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'false', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'false', 'true',
   'true', 'true', 'true', 'true', 'false', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'false', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'false',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
   'true', 'true', 'true', 'true', 'true', 'true', 'true', 'true']

Again how would I convert this array of strings into a boolean array?

4
  • Show us the format of the input CSV. Chances are you can read it directly to booleans. Commented Mar 9, 2020 at 11:26
  • @JohnZwinck How would I do that (read it in as a boolean array)? The catalogue is just an astropy table. Commented Mar 9, 2020 at 11:29
  • Show us the format of the input CSV. Commented Mar 9, 2020 at 11:31
  • Does this answer your question? Numpy Convert String Representation of Boolean Array To Boolean Array Commented Mar 9, 2020 at 12:14

3 Answers 3

3

You could try the following and it should work,

np.array(check)=='true'
Sign up to request clarification or add additional context in comments.

Comments

0

If check is a numpy array

check = np.array(['true', 'true', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true',
                  'true', 'false', 'true', 'true', 'true', 'true', 'true', 'true'])

then you can use eval(), capitalize() and tolist() combined into the one-liner

check = np.array([eval(i.capitalize()) for i in check.tolist()])

print(check)
print(type(check[0]))

Output:

[ True  True  True  True  True  True  True  True  True False  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  False  True  True  True  True  True  True  True  True  True  True  True
  True  True False  True  True  True  True  True False  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True False  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True
  True  True  True  True  True  True  True False  True  True  True  True
  True  True  True  True  True  True  True  True  True  True  True  True]
  <class 'numpy.bool_'>

Comments

0

I found that the following works:

check = (check == "true")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.