Python Numpy,mask图像的生成详解


Posted in Python onFebruary 19, 2020

什么是掩膜(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]]]

以上这篇Python Numpy, mask图像的生成详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python生成器与迭代器详解
Jan 01 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python中open函数的基本用法示例
Sep 07 Python
原生python实现knn分类算法
Oct 24 Python
Pytorch之finetune使用详解
Jan 18 Python
python实现飞机大战项目
Mar 11 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Python ConfigParser模块的使用示例
Oct 12 Python
Python之matplotlib绘制折线图
Apr 13 Python
浅谈图像处理中掩膜(mask)的意义
Feb 19 #Python
Python中logging日志库实例详解
Feb 19 #Python
在Python中通过threshold创建mask方式
Feb 19 #Python
python实现简单颜色识别程序
Feb 19 #Python
python绘制封闭多边形教程
Feb 18 #Python
python Shapely使用指南详解
Feb 18 #Python
Python模拟FTP文件服务器的操作方法
Feb 18 #Python
You might like
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
妙用Jquery的val()方法
2012/06/27 Javascript
js查找节点的方法小结
2015/01/13 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
Django组件cookie与session的具体使用
2019/06/05 Python
python判断正负数方式
2020/06/03 Python
python搜索算法原理及实例讲解
2020/11/18 Python
python3处理word文档实例分析
2020/12/01 Python
电气自动化自荐信
2013/10/10 职场文书
实习护士自荐信
2014/06/21 职场文书
学校个人对照检查材料
2014/08/26 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
2015年大学生村官工作总结
2015/04/21 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript