Python Numpy中MaskedArray详解与掩膜图像生成

晚来风
晚来风
发布时间:2026-10-13 | 1人浏览过
原创

本文详解Python Numpy中ma模块的MaskedArray类,介绍data、mask和fill_value三个核心属性,并通过代码示例演示如何生成掩膜数组及直接对ndarray进行条件运算,帮助开发者理解掩膜机制及其在数据处理中的应用。

掩膜(mask)概念解析

什么是掩膜(mask)

Numpy ma模块与MaskedArray基础

在Numpy中,存在一个名为ma的模块,该模块几乎复制了Numpy中的所有函数,但其底层实现已替换为针对其自定义的新数据类型MaskedArray的操作。

接下来我们查看最基本的数组定义方式。


An array class with possibly masked values.
Masked values of True exclude the corresponding element from any computation.

MaskedArray核心属性详解

MaskedArray是一种可能包含掩膜信息的数组,对其执行的所有计算仅针对掩膜值为True的数值进行。


Construction::

 x = MaskedArray(data, mask=nomask, dtype=None, copy=False, subok=True,
     ndmin=0, fill_value=None, keep_mask=True, hard_mask=None,
     shrink=True, order=None)

该类的属性众多,但通常只需关注data、mask和fill_value这三个属性。其他属性使用频率较低,例如hard_mask属性,若设为True,则被掩盖的值将真正丢失。具体细节可参考源码注解,此处不再赘述。


Parameters
----------
data : array_like
 Input data.
mask : sequence, optional
 Mask. Must be convertible to an array of booleans with the same
 shape as `data`. True indicates a masked (i.e. invalid) data.
fill_value : scalar, optional
 Value used to fill in the masked values when necessary.
 If None, a default based on the data-type is used.

data参数无需过多解释,可以是array_like、tuple、list或ndarray类型。

mask是一个仅包含True和False的ndarray,其形状与data一致。该数组用于指定需要掩盖的值,标记为True的数据将被掩盖,被掩盖的位置会显示为–(这是两个短横杠,类型为MaskedConstant)。

fill_value是一个标量。当掩盖某些值后,若希望将这些被掩盖的值替换为其他值,则需要使用此参数。


import numpy.ma as npm
import numpy as np

data = np.random.randint(1, 10, size=[1, 5, 5])
mask = data < 5
arr = npm.array(data, mask=mask)
print(arr)

#[[[6 6 -- 8 --]
# [-- -- -- 6 7]
# [9 -- -- 6 9]
# [-- -- 5 -- 8]
# [6 9 -- 5 --]]]

直接对ndarray进行条件运算

不过,Numpy也可以直接对ndarray进行条件运算。


import numpy as np

arr = np.random.randint(1, 10, size=[1, 5, 5])
mask = arr<5
arr[mask] = 0 # 把标记为True的值记为0
print(arr)

#[[[9 9 7 6 0]
# [0 0 6 9 0]
# [8 0 8 5 0]
# [0 5 5 8 9]
# [0 7 0 0 6]]]

以上关于Python Numpy中MaskedArray及掩膜图像生成的详解内容,旨在为读者提供参考,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表