Python 遮罩3D numpy数组,其中数组等于值列表

Python 遮罩3D numpy数组,其中数组等于值列表,python,numpy,masking,Python,Numpy,Masking,如何使用整数列表屏蔽3D numpy数组?我想屏蔽数组中元素等于列表中任何值的所有元素 用于此 这将输出: mask = [[[False False] [ True True]] [[False False] [False False]]] found elements = [2 3] np.in1d基本上是python中关键字中的在元素方面的等价物。由于它仅在1d阵列上运行,因此您还需要在末端进行重塑,以便遮罩的形状与数据的形状匹配 如果你想要这些职位的指数,你可以使用 为了

如何使用整数列表屏蔽3D numpy数组?我想屏蔽数组中元素等于列表中任何值的所有元素

用于此

这将输出:

mask = [[[False False]
  [ True  True]]

 [[False False]
  [False False]]]
found elements = [2 3]
np.in1d
基本上是python中
关键字中的
在元素方面的等价物。由于它仅在1d阵列上运行,因此您还需要在末端进行重塑,以便遮罩的形状与数据的形状匹配

如果你想要这些职位的指数,你可以使用

为了便于说明,上面将创建一个随机整数值介于0和10之间的3D数组。然后,我们将定义要从第一个数组屏蔽的值。然后,我们使用np.in1d方法根据原始数组和值创建bool掩码,并将其传递到,生成一个屏蔽数组,其中的值被屏蔽

这样,您就可以对未屏蔽的值运行操作,然后再取消屏蔽,或者用默认值填充它们

mask = [[[False False]
  [ True  True]]

 [[False False]
  [False False]]]
found elements = [2 3]
indices = zip( *np.where(mask) )
print indices
# [(0, 1, 0), (0, 1, 1)]
import numpy as np
import numpy.ma as ma

randomArray = np.random.random_integers(0, 10, (5, 5, 5))
maskingValues = [1, 2, 5]  
maskedRandomArray = ma.MaskedArray(randomArray, np.in1d(randomArray, maskingValues))