numpy中的掩码数组的使用
作者:生信修炼手册 发布时间:2022-10-19 23:36:46
标签:numpy,掩码数组
numpy中有一个掩码数组的概念,需要通过子模块numpy.ma来创建,基本的创建方式如下
>>> import numpy as np
>>> import numpy.ma as ma
>>> a = np.arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> b = ma.masked_array(a, mask = [1, 1, 1, 0, 0])
>>> b
masked_array(data = [-- -- -- 3 4],
mask = [ True True True False False],
fill_value = 999999)
>>> np.min(a)
0
>>> np.min(b)
3
所谓掩码,就是掩盖的意思。上述代码中,掩藏了数组的前3个元素,形成了一个新的掩码数组,在该掩码数组中,被掩藏的前3位用短横杠表示,对原始数组和对应的掩码数组同时求最小值,可以看到,掩码数组中只有未被掩藏的元素参与了计算。
掩码数组赋予了我们重新选择元素的权利,而不用改变矩阵的维度。在可视化领域,最典型的应用就是绘制三角热图,代码如下
import matplotlib.pyplot as plt
import numpy as np
import numpy.ma as ma
data = np.random.rand(25 * 25).reshape(25, -1)
mask = np.tri(data.shape[0], k= -1)
data_masked = ma.array(data, mask=mask)
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(data)
ax2.imshow(data_masked)
输出结果如下
通过掩码矩阵,可以轻松实现三角热图的绘制。在numpy.ma子模块中,还提供了多种创建掩码数组的方式,用法如下
>>> import numpy.ma as ma
>>> a
array([0, 1, 2, 3, 4])
# 等于2的元素被掩盖
>>> ma.masked_equal(a, 2)
masked_array(data = [0 1 -- 3 4],
mask = [False False True False False],
fill_value = 2)
# 不等于2的元素被掩盖
>>> ma.masked_not_equal(a, 2)
masked_array(data = [-- -- 2 -- --],
mask = [ True True False True True],
fill_value = 999999)
# 大于2的元素被掩盖
>>> ma.masked_greater(a, 2)
masked_array(data = [0 1 2 -- --],
mask = [False False False True True],
fill_value = 999999)
# 小于2的元素被掩盖
>>> ma.masked_less(a, 2)
masked_array(data = [-- -- 2 3 4],
mask = [ True True False False False],
fill_value = 999999)
# 大于等于2的元素被掩盖
>>> ma.masked_greater_equal(a, 2)
masked_array(data = [0 1 -- -- --],
mask = [False False True True True],
fill_value = 999999)
# 小于等于2的元素被掩盖
>>> ma.masked_less_equal(a, 2)
masked_array(data = [-- -- -- 3 4],
mask = [ True True True False False],
fill_value = 999999)
# 小于1大于3的元素被掩盖
>>> ma.masked_outside(a, 1, 3)
masked_array(data=[--, 1, 2, 3, --],
mask=[ True, False, False, False, True],
fill_value=999999)
# 大于等于1,小于等于3的元素被掩盖
>>> ma.masked_inside(a, 1, 3)
masked_array(data=[0, --, --, --, 4],
mask=[False, True, True, True, False],
fill_value=999999)
利用掩码数组,可以方便的处理缺失值或者被污染的值,只需要将对应的元素掩码即可,更多的用法请查阅官方的API文档。
来源:https://cloud.tencent.com/developer/article/1641455


猜你喜欢
- 最新在学习Python的基础入门系列课程,今天学习到使用python 的内置库smtplib发送邮件内容。使用Python发送邮件步骤简单:
- 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析logging日志原理及模块操作流程,主要介绍日志相关概念及loggi
- 本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下1.项目简介在刚刚学习完python套接字的时候做的一个五子棋
- python3.7简单的爬虫,具体代码如下所示:#https://www.runoob.com/w3cnote/python-spider-
- Server对象提供对服务器上访问的方法和属性.大多数方法和属性是作为实用程序的功能提供的。语法:Server.property|metho
- 本文实例讲述了Python网络编程使用select实现socket全双工异步通信功能。分享给大家供大家参考,具体如下:在前面一篇《Pytho
- 对于中小型个人、企业网站来说,MySQL数据库或许是目前数据库的最完美实施解决方案了。在不变更服务器硬件的前提下,一个经过良好架构,优化后的
- 什么是命令行交互当我们使用脚手架去创建一个项目的时候,通常会通过命令行交互来获取一些信息:比如填项目名称;选择项目模板;选择版本;需要安装哪
- 使用python的numpy模块实现逻辑回归模型的代码,供大家参考,具体内容如下使用了numpy模块,pandas模块,matplotlib
- 前言Python 思想:“一切都是对象!”,最近发现python3和python2中print的用法有很多不同,python3中需要使用括号
- 本文实例讲述了Python自定义装饰器原理与用法。分享给大家供大家参考,具体如下:什么是装饰器?装饰器本质是一个函数,它可以在不改变原来的函
- 本文实例讲述了Python实现获取汉字偏旁部首的方法。分享给大家供大家参考,具体如下:功能介绍传入一个汉字,返回其偏旁部首字典分为本地字典与
- 踩坑记录:用pandas来做csv的缺失值处理时候发现奇怪BUG,就是excel打开csv文件,明明有的格子没有任何东西,当然,我就想到用p
- 想学习Python3,但是暂时又离不开Python2。在Windows上如何让它们共存呢?目前国内网站经常会让大家把其中一个python.e
- 02条件语句和while循环三目运算a = 6#原判断语句if a > 5:print(True)else:print(False)#
- 汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。1. Python网页爬虫工具集一个真实的项目,一定是从获
- 解决此问题的几个关键点如下:1、该现象只会出现在NTFS文件系统中。2、由NTFS文件系统的访问权限导致。 一般手工操作的解决方案
- Python中的frame是什么栈帧(frame)栈帧表示程序运行时函数调用栈中的某一帧。想要获得某个函数相关的栈帧,则必须在调用这个函数且
- Linux系统中的信号类型各操作系统的信号定义或许有些不同。下面列出了POSIX中定义的信号。在linux中使用34-64信号用作实时系统中
- 用Python进行爬取网页文字的代码:#!/usr/bin/python# -*- coding: UTF-8 -*-import requ