bitfield_to_boolean_mask#

astropy.nddata.bitmask.bitfield_to_boolean_mask(bitfield, ignore_flags=None, flip_bits=None, good_mask_value=False, dtype=numpy.bool_)[源代码]#

根据从提供的位标志构造的位掩码,将位字段数组转换为布尔(或整数)掩码数组(请参阅 ignore_flags 参数)。

此函数在将数据质量数组转换为布尔掩码时特别有用,并对DQ标志进行选择性过滤。

参数:
bitfield : ndarray恩达雷

位标志数组。默认情况下,与零不同的值被解释为“坏”值,等于零的值被视为“好”值。但是,请参见 ignore_flags 参数指定如何有选择地忽略 bitfield 数组数据。

ignore_flags : intstrlistNone (默认值=0)PYTHON:INT,PYTHON:STR,PYTHON:LIST,PYTHON:NONE(默认值=0)

一个整数位掩码, None 或者一个Python标志,或者一个逗号,一个列表 '|' -分开了, '+' -整数位标志或助记标志名称的分隔字符串列表,指示输入中的位 bitfield 应该是 忽略 (即归零),或 None .

备注

什么时候? bit_flags 是一个标志名的列表 flag_name_map 必须提供参数。

设置 ignore_flagsNone 有效地将使 bitfield_to_boolean_mask 全部解释 bitfield 无论其价值如何,元素都是“好”的。
什么时候? ignore_flags 参数是一个整数位掩码,它将与输入的每个元素使用位“非”和“按位”组合 bitfield 数组 (~ignore_flags & bitfield ). 如果结果位字段元素为非零,则在输出布尔掩码中,该元素将被解释为“坏”,否则将被解释为“好”。 flip_bits 参数可用于翻转位 (bitwise-NOT )从而有效地改变了 ignore_flags 参数从“ignore”到“use only”这些标志。

备注

设置 ignore_flags 有效到0将假定输入中的所有非零元素 bitfield 数组被解释为“坏”。

什么时候? ignore_flags 参数是一个由整型位标志组成的Python列表,这些标志被加在一起以创建一个整型位掩码。列表中的每一项都必须是一个标志,即2的整数次幂的整数。为了翻转产生的位掩码的位,使用 flip_bits 参数。
或者, ignore_flags 可能是一个逗号字符串-或 '+' (或) '|' )-整数位标志的分隔列表,应将这些标志(按位或)相加以创建整数位掩码。例如,两者 '4,8''4|8''4+8' 是等价的,并指示输入中的位标志4和8 bitfield 生成布尔掩码时应忽略数组。

备注

'None''INDEF' ,和空字符串(或全部空白)是字符串的特殊值 ignore_flags 被解释为 None .

备注

列表中的每一项都必须是标志,即是2的整数次方的整数。此外,为方便起见,任意 single 允许使用整数,它将被解释为整数位掩码。例如,不是 '4,8' 用户可以简单地提供字符串 '12'

备注

一次只支持一个标志分隔符。 ignore_flags 绳子不能混在一起 ',''+''|' 分离器。

备注

什么时候? ignore_flags 是一个 str 当它前面加上“~”时 ignore_flags 参数将被反转:现在它将被解释为 used (或) 不容忽视 )在决定输入的哪些元素时 bitfield 数组是“坏的”。按照这个惯例 ignore_flags 字符串值 '~0' 相当于设置 ignore_flags=None .

警告

因为在字符串前面加上“~” ignore_flags 相当于设置 flip_bitsTrueflip_bits 不能与字符串一起使用 ignore_flags 它必须设置为 None .

flip_bits : boolNone (默认= None )布尔,派生:无(默认=派生:无)

指定是否反转直接通过提供的位掩码的位 ignore_flags 参数或根据传递的位标志生成 ignore_flags (仅当位标志作为整数位标志的Python列表传递时)。偶尔,它可能有用 只考虑特定的位标志bitfield 与创建布尔数组相反 忽略 特定位标志为 ignore_flags 默认情况下。这可以通过反转/翻转创建的位掩码的位来实现 ignore_flags 有效地改变 ignore_flags 参数从“ignore”到“use only”这些标志。设置 flip_bitsNone 表示不会执行位翻转。位标志的字符串列表的位翻转必须通过在字符串位标志列表前面加“~”来指定(请参阅文档中的 ignore_flags 了解更多详细信息)。

警告

This parameter can be set to either True or False ONLY when ignore_flags is either an integer bit mask or a Python list of integer bit flags. When ignore_flags is either None or a string list of flags, flip_bits MUST be set to None.

good_mask_value : intbool (默认= False )PYTHON:INT,BOOL(默认值=PYTHON:FALSE)

此参数用于派生将分配给输出布尔掩码数组中的元素的值,这些元素对应于“good”位字段(在 ignore_flags )在输入中 bitfield 数组。什么时候? good_mask_value 非零或 numpy.True_ 然后输出布尔掩码数组中与中的“good”位字段相对应的值 bitfieldnumpy.True_ (如果 dtypenumpy.bool_ )或1(如果 dtype 是数值类型),对应于“坏”标志的值将是 numpy.False_ (或0)。什么时候? good_mask_value 是零还是 numpy.False_ 然后输出布尔掩码数组中与“good”位字段相对应的值 bitfieldnumpy.False_ (如果 dtypenumpy.bool_ )或0(如果 dtype 是数值类型),对应于“坏”标志的值将是 numpy.True_ (或1)。

数据类型 :数据类型(默认值= numpy.bool_ )数据类型(默认值=

输出二进制掩码数组所需的数据类型。

flag_name_map : BitFlagNameMapBitFlagNameMap

A BitFlagNameMap 对象,该对象提供从助记符位标志名到整型位值的映射,以便在 bit_flags 以逗号或“+”分隔的菜单位标志名列表。

返回:
mask : ndarray恩达雷

返回与输入具有相同维数的数组 bitfield 数组的元素可以有两个可能的值,例如。, numpy.True_numpy.False_ (整数为1或0 dtype )根据输入的值 bitfield 元素, ignore_flags 参数,以及 good_mask_value 参数。

实例

>>> from astropy.nddata import bitmask
>>> import numpy as np
>>> dqarr = np.asarray([[0, 0, 1, 2, 0, 8, 12, 0],
...                     [10, 4, 0, 0, 0, 16, 6, 0]])
>>> flag_map = bitmask.extend_bit_flag_map(
...     'ST_DQ', CR=2, CLOUDY=4, RAINY=8, HOT=16, DEAD=32
... )
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=0,
...                                  dtype=int)
array([[0, 0, 1, 1, 0, 1, 1, 0],
       [1, 1, 0, 0, 0, 1, 1, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=0,
...                                  dtype=bool)
array([[False, False,  True,  True, False,  True,  True, False],
       [ True,  True, False, False, False,  True,  True, False]]...)
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=6,
...                                  good_mask_value=0, dtype=int)
array([[0, 0, 1, 0, 0, 1, 1, 0],
       [1, 0, 0, 0, 0, 1, 0, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=~6,
...                                  good_mask_value=0, dtype=int)
array([[0, 0, 0, 1, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 1, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=6, dtype=int,
...                                  flip_bits=True, good_mask_value=0)
array([[0, 0, 0, 1, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 1, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags='~(2+4)',
...                                  good_mask_value=0, dtype=int)
array([[0, 0, 0, 1, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 1, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=[2, 4],
...                                  flip_bits=True, good_mask_value=0,
...                                  dtype=int)
array([[0, 0, 0, 1, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 1, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags='~(CR,CLOUDY)',
...                                  good_mask_value=0, dtype=int,
...                                  flag_name_map=flag_map)
array([[0, 0, 0, 1, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 1, 0]])
>>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags='~(CR+CLOUDY)',
...                                  good_mask_value=0, dtype=int,
...                                  flag_name_map=flag_map)
array([[0, 0, 0, 1, 0, 0, 1, 0],
       [1, 1, 0, 0, 0, 0, 1, 0]])