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实现class对象转换成json/字典的方法
Mar 11 Python
python变量不能以数字打头详解
Jul 06 Python
Python 结巴分词实现关键词抽取分析
Oct 21 Python
快速查询Python文档方法分享
Dec 27 Python
python取代netcat过程分析
Feb 10 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
Python自动化xpath实现自动抢票抢货
Sep 19 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
PHP 中文处理技巧
2010/04/25 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
js+css实现打字效果
2020/06/24 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
Python实现把类当做字典来访问
2019/12/16 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
七年级英语教学反思
2014/01/15 职场文书
图书室管理制度
2014/01/19 职场文书
中班中秋节活动反思
2014/02/18 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
监察建议书
2015/02/04 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python