Python Numpy,mask图像的生成详解

作者:GZHermit 时间:2022-12-03 01:08:45 

什么是掩膜(mask)

在numpy中,有一个模块叫做ma,这个模块几乎复制了numpy里面的所有函数,当然底层里面都换成了对自己定义的新的数据类型MaskedArray的操作。

我们来看最基本的array定义。


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

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)

这个class的属性有很多,但是呢,我们只需要关注三个属性就好了,也就是data,mask和fill_value。其他的属性很难用到,举个例子,比如那个hard_mask,这个属性为True就是指data一旦某些值被掩盖掉了就真的丢失了。详细的可以看源码注解。这里不过多介绍。


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,它的shape和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 --]]]

不过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]]]

来源:https://blog.csdn.net/GZHermit/article/details/76163934

标签:Python,Numpy,mask
0
投稿

猜你喜欢

  • 中英文双语导航菜单

    2007-05-11 17:04:00
  • 白 刃之战:PHP vs. ASP.NET(节选)-架构比较

    2023-11-15 12:31:22
  • Python读取pdf表格写入excel的方法

    2023-08-25 12:33:18
  • asp显示字符串前5个文字

    2008-08-10 18:47:00
  • 使用requests库制作Python爬虫

    2023-08-17 21:43:23
  • SQL Server数据库连接查询的种类及其应用

    2009-01-06 11:28:00
  • python定时器使用示例分享

    2023-04-06 15:03:57
  • python矩阵运算,转置,逆运算,共轭矩阵实例

    2021-09-16 17:45:22
  • Python内置函数bin() oct()等实现进制转换

    2021-05-15 05:15:42
  • Python日期的加减等操作的示例

    2021-10-06 14:28:14
  • 表单制作方式大比拼

    2008-10-09 11:32:00
  • PHP获取url的函数代码

    2023-10-15 12:45:00
  • Python使用xlrd和xlwt批量读写excel文件的示例代码

    2022-09-17 01:54:54
  • asp MYSQL出现问号乱码的解决方法

    2011-04-15 11:13:00
  • python wav模块获取采样率 采样点声道量化位数(实例代码)

    2023-04-26 23:25:28
  • Python使用微信接入图灵机器人过程解析

    2022-05-29 04:03:14
  • Python ArcPy实现批量拼接长时间序列栅格图像

    2021-09-07 18:48:53
  • php关于array_multisort多维数组排序的使用说明

    2023-09-07 08:13:27
  • pygame学习笔记(4):声音控制

    2021-08-15 20:04:35
  • Python Opencv中获取卷积核的实现代码

    2021-04-07 07:11:50
  • asp之家 网络编程 m.aspxhome.com