Ambiguous Evaluation of Lambda Expression on Array
- by Joe
I would like to use a lambda that adds one to x if x is equal to zero. I have tried the following expressions:
t = map(lambda x: x+1 if x==0 else x, numpy.array)
t = map(lambda x: x==0 and x+1 or x, numpy.array)
t = numpy.apply_along_axis(lambda x: x+1 if x==0 else x, 0, numpy.array)
Each of these expressions returns the following error:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
My understanding of map() and numpy.apply_along_axis() was that it would take some function and apply it to each value of an array. From the error it seems that the the lambda is being evaluated as x=array, not some value in array. What am I doing wrong?
I know that I could write a function to accomplish this but I want to become more familiar with the functional programming aspects of python.