我试图在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()
有没有更好的方法来执行此操作?
用途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
| 归档时间: |
|
| 查看次数: |
1733 次 |
| 最近记录: |