python中阵列上的三元运算符

sha*_*enk 4 python arrays

我试图在python中对数组执行以下操作:

if true then a else b
Run Code Online (Sandbox Code Playgroud)

我试图在图像的一个通道上执行它.基本上我想检查一个值是否大于255,如果是,返回255否则返回正在检查的值.

这是我正在尝试的:

imfinal[:,:,1] = imfinal[:,:,1] if imfinal[:,:,1] <= 255 else 255
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all()

有没有更好的方法来执行此操作?

EdC*_*ica 6

用途np.where:

imfinal[:,:,1] = np.where(imfinal[:,:,1] <= 255, imfinal[:,:,1], 255)
Run Code Online (Sandbox Code Playgroud)

至于为什么你得到那个错误,请看:ValueError:具有多个元素的数组的真值是不明确的.使用a.any()或a.all().

基本上,当您使用比较数组时,它会变得模棱两可and,or因为如果数组中的1个值匹配怎么办?要比较数组,你应该使用按位运算符&,|,~and,or,not分别.

np.where当true为true时,使用boolean条件在第二个param中赋值,否则分配第3个param,参见docs