numpy中的掩码数组的使用

 更新时间:2023年02月20日 10:45:43   作者:生信修炼手册  
本文主要介绍了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文档。

到此这篇关于numpy中的掩码数组的使用的文章就介绍到这了,更多相关numpy 掩码数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python+Redis实现布隆过滤器

    Python+Redis实现布隆过滤器

    布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。这篇文章主要介绍了Python+Redis实现布隆过滤器,需要的朋友可以参考下
    2019-12-12
  • Python面向对象之继承原理与用法案例分析

    Python面向对象之继承原理与用法案例分析

    这篇文章主要介绍了Python面向对象之继承原理与用法,结合具体案例形式分析了Python面向对象程序设计中继承的原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-12-12
  • 对python3中的RE(正则表达式)-详细总结

    对python3中的RE(正则表达式)-详细总结

    今天小编就为大家分享一篇对python3中的RE(正则表达式)-详细总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • pytorch实现mnist数据集的图像可视化及保存

    pytorch实现mnist数据集的图像可视化及保存

    今天小编就为大家分享一篇pytorch实现mnist数据集的图像可视化及保存,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python利用Bokeh进行数据可视化的教程分享

    Python利用Bokeh进行数据可视化的教程分享

    Bokeh是Python中的数据可视化库,提供高性能的交互式图表和绘图。本文将利用Bokeh绘制一些可视化图表,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • Django高级编程之自定义Field实现多语言

    Django高级编程之自定义Field实现多语言

    这篇文章主要介绍了Django高级编程之自定义Field实现多语言,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)

    python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)

    这篇文章主要介绍了python虚拟环境的安装和配置(virtualenv,virtualenvwrapper),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python队列、进程间通信、线程案例

    Python队列、进程间通信、线程案例

    这篇文章主要介绍了Python队列、进程间通信、线程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 70行Python代码实现一个桌面自动翻译工具

    70行Python代码实现一个桌面自动翻译工具

    PySimpleGUI是一款很棒的自动化辅助模块,让你更轻松的实现日常任务的自动化。本文将利用PySimpleGUI编写一个桌面自动翻译工具,感兴趣的可以了解一下
    2022-07-07
  • Python文件的操作示例的详细讲解

    Python文件的操作示例的详细讲解

    本问重点讲解了Python文件的读写原理、常用文件打开模式、文件对象的常用方法和目录的相关操作详细讲解,对Python文件操作相关知识感兴趣的朋友跟随小编一起看看吧
    2021-04-04

最新评论