• 技术文章 >Python技术 >Python基础教程

    Python中numpy如何生成mask图像

    2020-11-02 15:08:06原创6381
    有的小伙伴对numpy如何生成mask图像产生了疑问,今天就这个问题为大家进行解答。

    在numpy中,有一个模块叫做ma,这个模块几乎复制了numpy里面的所有函数,当然底层里面都换成了对自己定义的新的数据类型MaskedArray的操作。

    我们来看最基本的array定义。

    1

    2

    <p style="line-height: 1.75em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">An array class with possibly masked values.

    Masked values of True exclude the corresponding element from any computation.<br></span></p>

    MaskedArray是一个可能带有掩膜信息的数组,对于它的任何计算都是只针对掩膜值为True的数值上的。

    1

    2

    3

    4

    5

    <p style="line-height: 1.75em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">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)<br></span></p>

    这个class的属性有很多,但是呢,我们只需要关注三个属性就好了,也就是data,mask和fill_value。其他的属性很难用到,举个例子,比如那个hard_mask,这个属性为True就是指data一旦某些值被掩盖掉了就真的丢失了。详细的可以看源码注解。这里不过多介绍。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    <p style="line-height: 1.75em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">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.<br></span></p>

    data就不多说了,一个array_like,tuple,list,ndarray都行。

    mask是一个只包含True和False的ndarray,它的shape和data一致,这个数组是让你指定需要掩盖的值的,标记为True的数据会被掩盖掉。被掩盖的位置会变成 –(这是两个短横杠,类型是MaskedConstant

    fill_value是一个标量,当你掩盖掉一些值之后,如果你想把这些被掩盖的值换成另外一个值,那么你就需要用到它。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    <p style="line-height: 1.75em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">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 --]]]<br></span></p>

    不过numpy也可以直接对ndarray进行条件运算。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    <p style="line-height: 1.75em;"><span style="font-family: 微软雅黑, "Microsoft YaHei";">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]]]<br></span></p>

    以上就是全部numpy生成mask图像的详解,更多Python学习推荐:PyThon学习网教学中心

    专题推荐:numpy生成mask图像;python
    上一篇:详解Python中numpy.loadtxt()读取txt文件 下一篇:Python中如何使用numpy.getmask()函数

    相关文章推荐

    • pycharm如何使用numpy• python中numpy数据类型转换的方法• Python基础:numpy中any()和all()的用法• 基础学习:Python中numpy如何切片• Python中numpy如何索引• python实例:Python中如何删除numpy数组的元素• 详解Python中numpy.loadtxt()读取txt文件

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网