python - 如何在 Python numpy 中的二维数组上应用一维掩码?

标签 python numpy mask

<分区>

有一维值数组:

arr0 = numpy.array([8,0,9,5])

还有一个二维数组,其形状为(len(arr0),3):

arr1 = numpy.array([9,5,6],
                   [2,7,4],
                   [6,7,8],
                   [1,8,3])

我想创建一个 arr1 的掩码数组,如果 arr0[i] == 0,其中 arr1[i] 被掩码:

Result arr2 = [[9,5,6],
               [-,-,-],
               [6,7,8],
               [1,8,3]]

创建这个新的掩码数组的优雅方法是什么?

我知道我可以使用形状为 (len(arr0),3) 的掩码来创建它。我希望我可以使用形状为 (len(arr0)) 的掩码来创建它。

最佳答案

如果您执行以下操作,您的掩码可以通过 bool 数组 arr0 == 0 设置:

In [1]: arr1 = numpy.ma.masked_array(arr1)
In [2]: arr1[arr0 == 0] = numpy.ma.masked
In [3]: print arr1
[[9 5 6]
[-- -- --]
[6 7 8]
[1 8 3]]

(顺便说一下,您的 arr1 定义需要一组额外的括号。)

关于python - 如何在 Python numpy 中的二维数组上应用一维掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228980/

相关文章:

python - 创建一个基本的Python接口(interface)来保存用鼠标绘制的图像

Python:比较两个列表并获得带符号的最大值和最小值

Python - 替换列表中的字符

python - cv2::imshow 的参数

python - 用另一个数组的子集切片 1d numpy 数组

python - 如何在多列上屏蔽 numpy 结构化数组?

python - 如何在keras中添加注意力机制?

Python:比 numpy 的 random.choice() 更快的替代品?

ios - Imageview ios 中的 mask 和反向 mask

matlab - 如何在基于 Matlab 中的二进制掩码标记的 ROI 上应用图像处理算法?