python - Comparing scalars to Numpy arrays -


this question has answer here:

what trying make table based on piece-wise function in python. example, wrote code:

import numpy np astropy.table import table, column astropy.io import ascii x = np.array([1, 2, 3, 4, 5]) y = x * 2 data = table([x, y], names = ['x', 'y']) ascii.write(data, "xytable.dat") xytable = ascii.read("xytable.dat") print xytable 

this works expected, prints table has x values 1 through 5 , y values 2, 4, 6, 8, 10.

but, if instead want y x * 2 if x 3 or less, , y x + 2 otherwise?

if add:

if x > 3:      y = x + 2 

it says:

the truth value of array more 1 element ambiguous. use a.any() or a.all()

how code table works piece-wise function? how compare scalars numpy arrays?

you can possibly use numpy.where():

in [196]: y = np.where(x > 3, x + 2, y)  in [197]: y out[197]: array([2, 4, 6, 6, 7]) 

the code above gets job done in vectorized manner. approach more efficient (and arguably more elegant) using list comprehensions , type conversions.


Comments