Ternary operator on arrays in python -
i trying perform following operation on array in python:
if true else b
i trying perform on 1 channel of image. want check if value greater 255, if so, return 255 else return value being checked.
here i'm trying:
imfinal[:,:,1] = imfinal[:,:,1] if imfinal[:,:,1] <= 255 else 255
i following error: valueerror: truth value of array more 1 element ambiguous. use a.any() or a.all()
is there better way perform operation?
use np.where
:
imfinal[:,:,1] = np.where(imfinal[:,:,1] <= 255, imfinal[:,:,1], 255)
as why error see this: valueerror: truth value of array more 1 element ambiguous. use a.any() or a.all().
essentially becomes ambiguous when compare arrays using and
, or
because if 1 value in array matches? compare arrays should use bitwise operators &
, |
, ~
and
, or
, not
respectively.
np.where
uses boolean condition assign value in second param when true, else assigns 3rd param, see docs
Comments
Post a Comment