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访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
Python之修改图片像素值的方法
Jul 03 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
python实现简单猜单词游戏
Dec 24 Python
Python 转移文件至云对象存储的方法
Feb 07 Python
python编写扎金花小程序的实例代码
Feb 23 Python
python 镜像环境搭建总结
Sep 23 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
多文件上载系统完整版
2006/10/09 PHP
php计算年龄精准到年月日
2015/11/17 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python动态监控日志内容的示例
2014/02/16 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
非常详细的C#面试题集
2016/07/13 面试题
我有一个梦想演讲稿
2014/05/05 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
朋友聚会开场白
2015/06/01 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis