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 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
python模拟Django框架实例
May 17 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
python SVM 线性分类模型的实现
Jul 19 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
Django模板语言 Tags使用详解
Sep 09 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
Python网页解析器使用实例详解
May 30 Python
python与pycharm有何区别
Jul 01 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
python 批量将中文名转换为拼音
Feb 07 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&amp;java(三)
2006/10/09 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
详解javascript appendChild()的完整功能
2018/08/18 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
python中实现k-means聚类算法详解
2017/11/11 Python
Python内置函数delattr的具体用法
2017/11/23 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Linux文件系统类型
2012/09/16 面试题
快递业务员岗位职责
2014/01/06 职场文书
核心价值观演讲稿
2014/05/13 职场文书
医学检验专业自荐信
2014/09/18 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers