Python numpy遮罩了一系列值

时间:2019-02-25 08:02:56

标签: python numpy mask

我有一个尺寸为100x100的称为img的2D数组。我试图将所有大于-100且小于100的值都屏蔽掉。

img = np.ma.masked_where(-100 < img < 100, img)

但是,以上内容给我一个错误的说法

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

谢谢。

2 个答案:

答案 0 :(得分:0)

您不能对NumPy数组使用链式比较,因为它们在后台使用了Python and

您必须使用&或等效的功能numpy.logical_andnumpy.bitwise_and

例如:

np.ma.masked_where((-100 < img) & (img < 100), img)

答案 1 :(得分:0)

您还可以使用masked inside,例如,我们可以屏蔽2到5范围内的值:

import numpy as np 
from numpy import ma 
img = np.arange(9).reshape(3,3)
imgm = ma.masked_inside(img,2,5)