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回溯法实现数组全排列输出实例分析
Mar 17 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
Bottle框架中的装饰器类和描述符应用详解
Oct 28 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
flask开启多线程的具体方法
Aug 02 Python
pytorch学习教程之自定义数据集
Nov 10 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
浅谈python数据类型及其操作
May 25 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实现的MySQL数据浏览器
2007/03/11 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
PHP实现简易计算器功能
2020/08/28 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
canvas滤镜效果实现代码
2017/02/06 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
Python中不同进制的语法及转换方法分析
2016/07/27 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
Django实现分页显示效果
2019/10/31 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
网站域名和主机:Domain.com
2019/04/01 全球购物
毕业生护理专业个人求职信范文
2014/01/04 职场文书
总经理助理工作职责
2014/02/06 职场文书
电气工程自动化求职信
2014/03/14 职场文书
《海底世界》教学反思
2014/04/16 职场文书
文艺晚会策划方案
2014/06/11 职场文书
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis