问题提出
今天上午在处理医学图像时,想要从标签图中提取出两个不同的部位,每个部位都用不同的值标识着(比如上软骨用1标识,下软骨用4标识)
之前提取一个部位时只需要使用im[im != 1] = 0
这样就可以把除上软骨的部位标记为0了,但是现在想要提取出两个部位,所以要使用多个条件,所以接下来看一看如何添加多个条件吧。
前置知识
对于python代码im[im != 1]
,筛选条件返回的数组大小和原数组大小一致
,只不过符合条件的位置为True
标识,不符合条件的位置用False
标识。
使用多个条件进行筛选
- 两个条件必须先使用括号括起来
- 与关系用&,或关系用 |
- 除了之间使用下标外,还可以用
np.logical_and()
或者np.logical_or()
函数
示例
# 将im中值为2或4的位置进行保留,其余位置元素全置为零
# 这里使用与关系的原因在于,一个元素只有既不是2也不是4时就会被置为0(当为2或4时该值为True,只有两个筛选条件都是False时才证明该元素应该为背景)
im[(im != 4) & (im != 2)] = 0
参考链接
下面这个链接有多筛选条件在np.where()中的具体使用,大家可以看一下~
numpy.where() 多个条件